source

Wordpress - 포스트 편집 페이지의 카테고리 목록 순서

manysource 2023. 2. 8. 19:46

Wordpress - 포스트 편집 페이지의 카테고리 목록 순서

WordPress가 admin > post edit 페이지에서 카테고리 목록의 순서를 변경하는 것을 중지합니다.디폴트 동작에서는, 투고에 할당된 카테고리를, 본래의 부모/자녀 플로우로부터 떼어내, 리스트의 선두에 배치합니다.카테고리 구조가 크면 혼란스럽기 때문에 그만하고 싶습니다.

무슨 생각 있어?

감사해요.

위는 훌륭한 대체 솔루션이지만, 특히 분류 체크리스트 메타박스에 대한 제어가 필요한 경우 가장 간단한 해결책은 다음과 같습니다.

function taxonomy_checklist_checked_ontop_filter ($args)
{

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

}

add_filter('wp_terms_checklist_args','taxonomy_checklist_checked_ontop_filter');

그걸로 해결이 될 거야!

어떤 버전의 Wordpress를 사용하고 있습니까?Wordpress 3.04는 Post Edit 페이지에 부모/자녀 트리를 제공합니다."Most Used" 탭도 표시하지 않으시겠습니까?

아니요, 게시물이 저장되면 나타나는 문제를 정확히 알 수 있습니다.

교리목 여기에 이미지 설명 입력

좋아, 이걸 붙여서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에 열중하여wp_terms_checklist()그 난장판 한가운데서 기능을 합니다.다른 것은 모두 오리지널입니다.post_categories_meta_box()기능.

(원본을 수정하기만 하면 됩니다.post_categories_meta_box()/wp-admin/includes/meta-boxes.php단, 코어 조작은 권장하지 않습니다.상기와 같이 액션을 추가/삭제하는 것이 적절한 방법입니다.

여기에 이미지 설명 입력

http://wordpress.org/extend/plugins/category-checklist-tree/만을 지원하는 플러그인이 있습니다.

언급URL : https://stackoverflow.com/questions/4830913/wordpress-category-list-order-in-post-edit-page