0

これは必要以上に難しいか、WordPress/PHP をよく理解していないだけです :( 私がやりたいのは、特定の親カテゴリの子/サブカテゴリを表示することだけです...ただし、投稿がそれらにある場合のみ具体例:

私はワイン レビューのウェブサイトを構築しています。これらはカテゴリです。

  • ブランド
    • サブカテゴリ 1
    • サブカテゴリ 2
  • 領域
    • サブカテゴリ 1
    • サブカテゴリ 2
  • 葡萄
    • サブカテゴリ 1
    • サブカテゴリ 2

親カテゴリは決して変更されず、すべての投稿には各親の下に少なくとも 1 つのサブカテゴリが選択されるため、LOOP では親を名前でリストするだけです。しかし、次のようなサブカテゴリを動的に出力する必要があります。

Brand: <?php list_post_subcategories('brand'); ?>
Region: <?php list_post_subcategories('region'); ?>
Grape: <?php list_post_subcategories('grape'); ?>

このような簡単な方法はありますか?これはWordpressの基本的な機能であるべきだと思いますか?関数「get_categories」と「in_category」を見てきましたが、これを行うことができないようです。

4

3 に答える 3

0

はWordpress Answersに投稿してより多くの助けを得ました. @Miloは素晴らしいコードソリューションを提供してくれました:

// get top level terms
$parents = get_terms( 'category', array( 'parent' => 0 ) );
// get post categories
$categories = get_the_terms( $post->ID, 'category' );
// output top level cats and their children
foreach( $parents as $parent ):
// output parent name and link
echo '<a href="' . get_term_link( $parent ) . '">' . $parent->name . '</a>: ';
// initialize array to hold child links
$links = array();
foreach( $categories as $category ):
    if( $parent->term_id == $category->parent ):
        // put link in array
        $links[] = '<a href="' . get_term_link( $category ) . '">' . $category->name .      '</a>';
    endif;
endforeach;
// join and output links with separator
echo join( ', ', $links );
endforeach;
于 2013-10-21T20:46:01.943 に答える
0

を使用array_mapして、必要なカテゴリのみを返すことができます。例えば:

array_map( function( $cat ) {
        if ( $cat->parent != 0 ) {
            return $cat;
        }
     },
     get_the_category()
);
于 2018-10-30T12:06:43.187 に答える