web-dev-qa-db-ja.com

リストカテゴリの「show option all」に分類法が表示されない

カスタム分類法を表示するために設定された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
Steve

wp_list_categories()はカスタム分類法のある特定の状況でユニークに役立つという点で奇妙な関数ですが、存在する前にもともと書かれていました。 (これは2.1で導入され、taxonomy属性は3.0で追加されました( source )。)

あなたが目にしているのは、 関連バグレポート (2年前に提出され、4ヶ月前の最後の活動)の既知の問題です。 ソース を見ると、リンクがpage_for_postsページに移動するようにハードコードされていることがわかります。だから今のところ、あなたは回避策を探しています。

@ tomas-cotがコメント でコメントしているように 、コードスニペットのpost_type引数はwp_list_categories()の有効な引数ではありません。しかし、私はあなたが意図しているのはあなたのCPTのPost Type Archiveページに行くためのshow_option_allリンクであると思います。

これは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
mrwweb