Ієрархічна систематика таксономії


11

Мені не подобається, як таксономії відображаються в адміністраторі Wordpress, і мені було цікаво, чи знає хто найкращий спосіб підключити та змінити його. Наразі, якщо я вибрав якісь терміни у своєму дописі, ці вибрані терміни переходять у верхню частину списку, і ієрархія порушена, що робить його візуально заплутаним для користувача.

Будь ласка, перегляньте ці зображення, щоб мати уявлення про те, про що я говорю

введіть тут опис зображення введіть тут опис зображення

Я хочу відобразити таксономії, як саме вони відображаються спочатку з правильними позначками. Чи є спосіб зробити це без редагування ядра Wordpress безпосередньо, я не бачу жодних гачків, якими я користуюся.

Дякую за будь-яку допомогу, яку ви можете надати!

Олена


1
Це відбувається з усіма герархічними таксономіями, це надзвичайно дратує!
Том Дж. Ноуелл

Приємне запитання. +1.
Anh Tran

Відповіді:



2

Назад

Давайте спочатку перевіримо, де це насправді відбувається:

Вікно мета додається на 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 ));

Потім ми переміщаємо один файл глибше в ядро, щоб дістатись до визначення / мета-зворотного виклику

// 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 та PHP.

Робити щось на кшталт ...

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

... просто б повністю відключити прапорець.

оновиться, якщо я отримаю більше інформації та (можливо, рішення)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.