"показать опцию все" в категориях списка не отображает таксономию
У меня есть список 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);
Может ли это сработать? Как?
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>