web-dev-qa-db-ja.com

他のカテゴリにサブカテゴリを表示し、投稿を表示する方法

私はこのような階層があります:Category1 - Subcategory1 - Subcategory2 - Post1 Category2 - Subcategory1

私がカテゴリ// //に行くとき、私はサブカテゴリの名前と説明を表示する必要があります。

    <?php if (is_category()) {
    $this_category = get_category($cat);
    if (get_category_children($this_category->cat_ID) != "") {
        echo '<div id="catlist"><ul>';
            $childcategories = get_categories(array(
                'orderyby' => 'name',
                'hide_empty' => false,
                'child_of' => $this_category->cat_ID
            ));

        foreach($childcategories as $category) {
            echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>';
            echo '<p>'.$category->description.'</p>';
        }
        echo '</ul></div>';
    }
}
?>

今すぐ私はサブカテゴリのリンクをクリックした場合、カテゴリと空白のページをクリックするとサブカテゴリのリストがありますが、私はサブカテゴリのリストをクリックすると投稿を表示する必要があります。

6
Dima Skvarskyi

あなたのコードは子カテゴリをチェックしてそれらが存在するかどうかを表示しますが、その後現在のカテゴリの投稿を通常表示するようなループを処理することはしません。

あなたはあなたのコードを次の形式になるように拡張したいと思います。

if ( is_category() ) {

    $this_category = get_category($cat);

    if ( get_category_children( $this_category->cat_ID ) != "" ) {

        // display the list of child categories as you currently do

    } else {

        /* run the standard loop to show the posts using
           whatever loop code your other templates use
        */

    }
}
1
if (is_category()){
$category = get_queried_object();
$subcategories = get_category_children( $category->term_id );
// var_dump($subcategories);
if ( $subcategories != "" ) {
    echo '<div id="catlist"><ul>';
    $childcategories = get_categories(array(
        'orderyby' => 'name',
        'hide_empty' => false,
        'child_of' => $category->term_id,
    ));
    foreach( $childcategories as $single ) {
       echo '<a href="' . get_category_link( $single->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $single->name ) . '" ' . '>' . $single->name.'</a>';
       echo '<p>'.$single->description.'</p>';
    }
    echo '</ul></div>';
} else {
// your loop.
}
0
<div id="content" role="main">
       <?php if (is_category()) {
    $this_category = get_category($cat);
    if (get_category_children($this_category->cat_ID) != "") {
        echo '<div id="catlist"><ul>';
            $childcategories = get_categories(array(
                'orderyby' => 'name',
                'hide_empty' => false,
                'child_of' => $this_category->cat_ID
            ));
        foreach($childcategories as $category) {
            echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>';
            echo '<p>'.$category->description.'</p>';
        } echo '</ul></div>';
    }
    else{       
        get_template_part('loop-header');   
        if (have_posts()) :
            get_template_part('loop-actions');
            get_template_part('loop-content');
            get_template_part('loop-nav');
        else :
            get_template_part('loop-error');
        endif;  }}?>
<?php 
    ?>
    </div>
0
tayyab islam