web-dev-qa-db-ja.com

階層分類UI

分類法がWordpressの管理者の中に表示される方法が好きではなく、誰かがそれを変更して変更する最良の方法を知っているかどうか疑問に思いました。現在、自分の投稿内でいくつかの用語を選択した場合、それらの選択された用語はリストの一番上に表示され、階層が壊れてユーザーにとって視覚的にわかりにくくなります。

私が話していることについての考えのためにこれらのイメージを見てください

enter image description hereenter image description here

タクソノミーを最初に表示される方法と、正しい語句にチェックマークを付けて正確に表示する必要があります。 Wordpressのコアを直接編集せずにこれを実行する方法はありますか、使用するためのフックが見えません。

あなたが与えることができるあらゆる助けをありがとう!

ヘレン

11
FlimFlam

Scribu と呼ばれる Category Checklist Tree によるプラグインがあり、これはこの "機能"を無効にします。

7
Emzo

バックトレース

最初にこれが実際に起こる場所をチェックしましょう:

メタボックスはpost.phpおよびpost-new.php画面に追加されます。

# inside ~/wp-admin/edit-form-advanced.php
// TAGS:
if ( !is_taxonomy_hierarchical($tax_name) )
    add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));
// CATEGORIES:
else
    add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));

それから、1つのファイルをコアの奥深くに移動して、定義/メタボックスコールバックを取得します。

// inside ~/wp-admin/meta-boxes.php
function post_categories_meta_box( $post, $box )

categorychecklistタブはリストを保持するものです。 divの中に、wp_popular_terms_checklist($taxonomy);という名前の関数があります。

# inside ~/wp-admin/includes/template.php
<li id="<?php echo $id; ?>" class="popular-category">
<label class="selectit">
<input id="in-<?php echo $id; ?>" type="checkbox" <?php echo $checked; ?> value="<?php echo (int) $term->term_id; ?>" <?php echo $disabled ?>/>
    <?php echo esc_html( apply_filters( 'the_category', $term->name ) ); ?>
</label>
</li>

"結論:

これは、WP filters/hooksとPHPでこれをプレーンなサーバーサイドレベルで傍受する本当の機会がないことを意味します。

のようなことをしています...

add_filter( 'wp_get_object_terms', '__return_empty_array', 20, 4 );

...チェックボックスを完全に無効にするだけです。

私がより多くの情報を手に入れたら更新します(そしておそらく解決策)

2
kaiser