2011-01-28 12 views
8

मैं वर्डप्रेस को श्रेणी> पोस्ट एडिट पेज में श्रेणी सूची को फिर से ऑर्डर करना बंद करना चाहता हूं। डिफ़ॉल्ट व्यवहार अपने प्राकृतिक माता-पिता/बाल प्रवाह के पद को निर्दिष्ट श्रेणियों को लेना और उन्हें सूची के शीर्ष पर रखना है। मैं ऐसा करना बंद करना चाहता हूं क्योंकि श्रेणी संरचना बड़ी है जब यह भ्रमित है।वर्डप्रेस - पोस्ट एडिट पेज में श्रेणी सूची ऑर्डर

कोई विचार?

धन्यवाद।

उत्तर

6

वर्डप्रेस का आप किस संस्करण का उपयोग कर रहे हैं? वर्डप्रेस 3.04 पोस्ट संपादित पृष्ठ पर अभिभावक/बाल पेड़ प्रदान करता है। क्या आप वाकई "सर्वाधिक उपयोग किए गए" टैब को नहीं देख रहे हैं?

Cateogory Treeenter image description here

ठीक, अपने विषय में functions.php में इस चिपकाने का प्रयास करें:

कोई बात नहीं, मैं वास्तव में समस्या के बारे में आप, जो तब दिखाई देते हैं पद सहेजा जाता है बात कर रहे हैं देखते हैं:

// remove the old box 
function remove_default_categories_box() { 
    remove_meta_box('categorydiv', 'post', 'side'); 
} 
add_action('admin_head', 'remove_default_categories_box'); 

// add the new box 
function add_custom_categories_box() { 
    add_meta_box('customcategorydiv', 'Categories', 'custom_post_categories_meta_box', 'post', 'side', 'low', array('taxonomy' => 'category')); 
} 
add_action('admin_menu', 'add_custom_categories_box'); 

/** 
* Display CUSTOM post categories form fields. 
* 
* @since 2.6.0 
* 
* @param object $post 
*/ 
function custom_post_categories_meta_box($post, $box) { 
    $defaults = array('taxonomy' => 'category'); 
    if (!isset($box['args']) || !is_array($box['args'])) 
     $args = array(); 
    else 
     $args = $box['args']; 
    extract(wp_parse_args($args, $defaults), EXTR_SKIP); 
    $tax = get_taxonomy($taxonomy); 

    ?> 
    <div id="taxonomy-<?php echo $taxonomy; ?>" class="categorydiv"> 
     <ul id="<?php echo $taxonomy; ?>-tabs" class="category-tabs"> 
      <li class="tabs"><a href="#<?php echo $taxonomy; ?>-all" tabindex="3"><?php echo $tax->labels->all_items; ?></a></li> 
      <li class="hide-if-no-js"><a href="#<?php echo $taxonomy; ?>-pop" tabindex="3"><?php _e('Most Used'); ?></a></li> 
     </ul> 

     <div id="<?php echo $taxonomy; ?>-pop" class="tabs-panel" style="display: none;"> 
      <ul id="<?php echo $taxonomy; ?>checklist-pop" class="categorychecklist form-no-clear" > 
       <?php $popular_ids = wp_popular_terms_checklist($taxonomy); ?> 
      </ul> 
     </div> 

     <div id="<?php echo $taxonomy; ?>-all" class="tabs-panel"> 
      <?php 
      $name = ($taxonomy == 'category') ? 'post_category' : 'tax_input[' . $taxonomy . ']'; 
      echo "<input type='hidden' name='{$name}[]' value='0' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks. 
      ?> 
      <ul id="<?php echo $taxonomy; ?>checklist" class="list:<?php echo $taxonomy?> categorychecklist form-no-clear"> 
       <?php 
       /** 
       * This is the one line we had to change in the original function 
       * Notice that "checked_ontop" is now set to FALSE 
       */ 
       wp_terms_checklist($post->ID, array('taxonomy' => $taxonomy, 'popular_cats' => $popular_ids, 'checked_ontop' => FALSE)) ?> 
      </ul> 
     </div> 
    <?php if (!current_user_can($tax->cap->assign_terms)) : ?> 
    <p><em><?php _e('You cannot modify this taxonomy.'); ?></em></p> 
    <?php endif; ?> 
    <?php if (current_user_can($tax->cap->edit_terms)) : ?> 
      <div id="<?php echo $taxonomy; ?>-adder" class="wp-hidden-children"> 
       <h4> 
        <a id="<?php echo $taxonomy; ?>-add-toggle" href="#<?php echo $taxonomy; ?>-add" class="hide-if-no-js" tabindex="3"> 
         <?php 
          /* translators: %s: add new taxonomy label */ 
          printf(__('+ %s'), $tax->labels->add_new_item); 
         ?> 
        </a> 
       </h4> 
       <p id="<?php echo $taxonomy; ?>-add" class="category-add wp-hidden-child"> 
        <label class="screen-reader-text" for="new<?php echo $taxonomy; ?>"><?php echo $tax->labels->add_new_item; ?></label> 
        <input type="text" name="new<?php echo $taxonomy; ?>" id="new<?php echo $taxonomy; ?>" class="form-required form-input-tip" value="<?php echo esc_attr($tax->labels->new_item_name); ?>" tabindex="3" aria-required="true"/> 
        <label class="screen-reader-text" for="new<?php echo $taxonomy; ?>_parent"> 
         <?php echo $tax->labels->parent_item_colon; ?> 
        </label> 
        <?php wp_dropdown_categories(array('taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3)); ?> 
        <input type="button" id="<?php echo $taxonomy; ?>-add-submit" class="add:<?php echo $taxonomy ?>checklist:<?php echo $taxonomy ?>-add button category-add-sumbit" value="<?php echo esc_attr($tax->labels->add_new_item); ?>" tabindex="3" /> 
        <?php wp_nonce_field('add-'.$taxonomy, '_ajax_nonce-add-'.$taxonomy, false); ?> 
        <span id="<?php echo $taxonomy; ?>-ajax-response"></span> 
       </p> 
      </div> 
     <?php endif; ?> 
    </div> 
    <?php 
} 

केवल वास्तविक परिवर्तनमें आर्ग को 'checked_ontop' => FALSE जोड़ने था उस गड़बड़ी के बीच मेंफ़ंक्शन। बाकी सब कुछ मूल post_categories_meta_box() फ़ंक्शन है।

(तुम बस /wp-admin/includes/meta-boxes.php में मूल post_categories_meta_box() को संशोधित कर सकता है, लेकिन यह कोर और जोड़ने/के रूप में ऊपर कार्यों को हटाने यह करने के लिए उचित तरीका है के साथ गड़बड़ करने के लिए अनुशंसित नहीं है।

enter image description here

+0

मैंने अभी इसका परीक्षण किया है और यह अच्छी तरह से काम करता है - लागू करने के लिए अच्छा और आसान समाधान। – Schoffelman

+0

इसके अलावा, आप इस "फीचर" से नाराज एकमात्र व्यक्ति नहीं हैं: [वर्डप्रेस ट्रैक] से (http://core.trac.wordpress.org/ticket/10982) – SideOfBacon

+0

यह शानदार है, धन्यवाद। –

14

जबकि उपरोक्त महान वैकल्पिक समाधान हैं, खासकर यदि आप वर्गीकरण चेकलिस्ट मेटाबॉक्स पर अधिक नियंत्रण चाहते हैं, तो मुझे लगता है कि सबसे सरल समाधान निम्न होगा:

function taxonomy_checklist_checked_ontop_filter ($args) 
{ 

    $args['checked_ontop'] = false; 
    return $args; 

} 

add_filter('wp_terms_checklist_args','taxonomy_checklist_checked_ontop_filter'); 

और इसका ध्यान रखना चाहिए!

संबंधित मुद्दे