पैनल संपादित करने के लिए कस्टम कॉलम का क्रम बदलें


27

जब आप एक कस्टम कॉलम को रजिस्टर करते हैं, जैसे:

//Register thumbnail column for au-gallery type
add_filter('manage_edit-au-gallery_columns', 'thumbnail_column');
function thumbnail_column($columns) {
$columns['thumbnail'] = 'Thumbnail';
return $columns;
}

डिफ़ॉल्ट रूप से यह दाईं ओर अंतिम एक के रूप में दिखाई देता है। मैं ऑर्डर कैसे बदल सकता हूं? क्या होगा यदि मैं उपरोक्त कॉलम को पहले एक या दूसरे के रूप में दिखाना चाहता हूं?

पहले ही, आपका बहुत धन्यवाद

जवाबों:


36

आप मूल रूप से एक PHP सवाल पूछ रहे हैं, लेकिन मैं इसका जवाब दूंगा क्योंकि यह वर्डप्रेस के संदर्भ में है। आपको कॉलम सरणी को फिर से बनाने की जरूरत है , अपने कॉलम को उस कॉलम से पहले डालें जिसमें आप इसे छोड़ना चाहते हैं :

add_filter('manage_posts_columns', 'thumbnail_column');
function thumbnail_column($columns) {
  $new = array();
  foreach($columns as $key => $title) {
    if ($key=='author') // Put the Thumbnail column before the Author column
      $new['thumbnail'] = 'Thumbnail';
    $new[$key] = $title;
  }
  return $new;
}

हाँ मुझे लगता है कि यह और आसान तरीका होगा :), लेकिन मुझे अपने उत्तर में यह विचार सही लगा। अच्छी सोच।
बैनेटर्न

उत्तर पूर्वी उत्तर - जब आप अपना उत्तर दे रहे थे, तब मैंने अपना उत्तर लिखना लगभग समाप्त कर दिया था, इसलिए हमारे उत्तर "मेल में पार" हो गए , इसलिए बोलने के लिए। वैसे भी, मुझे यह पता लगाने में थोड़ा समय लगा; यह निश्चित रूप से मेरे लिए पहली बार नहीं था जब मुझे इसकी आवश्यकता थी।
11

एक बात के लिए बाहर देखने के लिए: क्या होता है अगर एक और प्लगइन ने लेखक कॉलम को हटा दिया? आपका अपना थंबनेल कॉलम भी गायब हो जाएगा। आप isset($new['thumbnail'])लौटने से पहले एक चेक कर सकते थे $new। यदि यह सेट नहीं है, तो बस अंत में इसे संलग्न करें, उदाहरण के लिए।
गीर्ट

5

यदि आपके पास WPML जैसे प्लगइन्स हैं जो स्वचालित रूप से कॉलम जोड़ते हैं, यहां तक ​​कि कस्टम पोस्ट प्रकारों तक, तो आपके टेबल हेडर में जटिल कोड हो सकते हैं।

आप कोड को अपनी कॉलम परिभाषा में कॉपी नहीं करना चाहते हैं। कोई क्यों, उस बात के लिए।

हम पहले से ही उपलब्ध कराए गए, अच्छी तरह से स्वरूपित और क्रमबद्ध डिफ़ॉल्ट कॉलम को विस्तारित करना चाहते हैं।

वास्तव में, यह कोड की सिर्फ सात लाइनें हैं, और यह अन्य सभी कॉलमों को बरकरार रखती है।

# hook into manage_edit-<mycustomposttype>_columns
add_filter( 'manage_edit-mycustomposttype_columns', 'mycustomposttype_columns_definition' ) ;

# column definition. $columns is the original array from the admin interface for this posttype.
function mycustomposttype_columns_definition( $columns ) {

  # add your column key to the existing columns.
  $columns['mycolumn'] = __( 'Something different' ); 

  # now define a new order. you need to look up the column 
  # names in the HTML of the admin interface HTML of the table header. 
  #   "cb" is the "select all" checkbox.
  #   "title" is the title column.
  #   "date" is the date column.
  #   "icl_translations" comes from a plugin (in this case, WPML).
  # change the order of the names to change the order of the columns.
  $customOrder = array('cb', 'title', 'icl_translations', 'mycolumn', 'date');

  # return a new column array to wordpress.
  # order is the exactly like you set in $customOrder.
  foreach ($customOrder as $colname)
    $new[$colname] = $columns[$colname];    
  return $new;
}

उम्मीद है की यह मदद करेगा..


3

एकमात्र तरीका मुझे पता है कि कॉलम की अपनी खुद की सरणी कैसे बनाई जाती है

// Add to admin_init function
add_filter('manage_edit-au-gallery_columns', 'add_my_gallery_columns');

function add_my_gallery_columns($gallery_columns) {
        $new_columns['cb'] = '<input type="checkbox" />';

        $new_columns['id'] = __('ID');
        $new_columns['title'] = _x('Gallery Name', 'column name');
                // your new column somewhere good in the middle
        $new_columns['thumbnail'] = __('Thumbnail');

        $new_columns['categories'] = __('Categories');
        $new_columns['tags'] = __('Tags');
        $new_columns['date'] = _x('Date', 'column name');

        return $new_columns;
    }

और फिर इस अतिरिक्त जोड़े गए कॉलम को प्रस्तुत करें जैसे आप सामान्य रूप से करेंगे

// Add to admin_init function
    add_action('manage_au-gallery_posts_custom_column', 'manage_gallery_columns', 10, 2);

    function manage_gallery_columns($column_name, $id) {
        global $wpdb;
        switch ($column_name) {
        case 'id':
            echo $id;
                break;

        case 'Thumbnail':
            $thumbnail_id = get_post_meta( $id, '_thumbnail_id', true );
                // image from gallery
                $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
                if ($thumbnail_id)
                    $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
                elseif ($attachments) {
                    foreach ( $attachments as $attachment_id => $attachment ) {
                        $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
                    }
                }
                if ( isset($thumb) && $thumb ) {echo $thumb; } else {echo __('None');}
            break;
        default:
            break;
        } // end switch
}

उम्मीद है की यह मदद करेगा


2

यह कुछ SO उत्तरों का संयोजन है, उम्मीद है कि यह किसी की मदद करता है!

function array_insert( $array, $index, $insert ) {
    return array_slice( $array, 0, $index, true ) + $insert +
    array_slice( $array, $index, count( $array ) - $index, true);
}

add_filter( 'manage_resource_posts_columns' , function ( $columns ) {
    return array_insert( $columns, 2, [
        'image' => 'Featured Image'
    ] );
});

मैंने पाया कि array_splice()कस्टम कुंजी नहीं रखेंगे जैसे हमें इसकी आवश्यकता है। array_insert()कर देता है।


1
यह सही उत्तर होना चाहिए।
xudre
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.