"показать опцию все" в категориях списка не отображает таксономию


У меня есть список wp_list_categories, настроенный для отображения моей пользовательской таксономии.

Все работает нормально, и теперь я хочу добавить ссылку show_option_all.

Однако при нажатии на ссылку отображаются все сообщения типа по умолчанию и ни одного пользовательской таксономии. Очевидно, что цель состоит в том, чтобы отобразить все записи в этой таксономии, и только их.

$args = array('post_type' => 'design_asset', 'show_count' => 1, 'taxonomy' => 'asset_type', 'show_option_all' => 'Show All');
wp_list_categories($args);

Может ли это сработать? Как?

Author: Steve, 2014-08-20

1 answers

wp_list_categories() это странная функция в том смысле, что она уникально полезна в определенных ситуациях с пользовательскими таксономиями, но изначально она была написана еще до их существования. (Он был введен в 2.1, а атрибут taxonomy был добавлен в 3.0 (источник).)

То, что вы видите, - это известная проблема с связанным сообщением об ошибке (подано два года назад, последнее действие четыре месяца назад). Если вы посмотрите на источник , вы увидите, что ссылка жестко запрограммирована для перехода на page_for_posts страница. Так что на данный момент вы ищете обходной путь.

Как отмечает @tomas-cot в своем комментарии , аргумент post_type в вашем фрагменте кода не является допустимым аргументом для wp_list_categories(). Тем не менее, я думаю, что вы намереваетесь перейти по ссылке show_option_all на страницу архива типа сообщения вашего CPT.

Вы могли бы сделать это с помощью класса walker или, возможно, взломать аргумент title_li, но поскольку вам все равно нужно обернуть функцию в теги <ul>, я бы рекомендовал следующее (непроверенное) код:

<?php
$list_cat_args = array(
    'show_count' => 1,
    'taxonomy' => 'asset_type',
    'use_desc_for_title' => 0 /* title attr bad for accessibility! */
);
// get the post type archive link
$all_posts_url = get_post_type_archive_link( 'design_asset' );
?>
<ul>
    <li><a href="<?php echo esc_url( $all_posts_url ); ?>">Show All</a></li>
    <?php wp_list_categories( $list_cat_args ); ?>
</ul>
 3
Author: mrwweb, 2017-04-13 12:37:54