按子类别列出已存档帖子

时间:2021-07-18 作者:kneidels

我想通过类别覆盖默认的后期存档。

在某些情况下(并非全部),我有两个级别类别,例如:

父类别:“No No No modHFGen.dll;视频“;

“子类别”;喜剧“但其他一些类别只是单一级别。

目前,无论你选择哪个类别,你都会得到一个帖子列表,无论它是主类别还是子类别。

我想做的是,当输入类别列表时,会对存在的子类别进行测试,如果存在,则帖子应该是这样的列表:

Heading: Video

Comedy

  • 第1后
  • 第2后
  • 第3后
    • Action

      <如果没有子类别,则显示默认列表:

      Heading: Books

      <如何做到这一点?

      我有非常基础的PHP知识,并安装了PHPCode脚本,但我不知道如何访问归档/分类页面。

      如果相关,我使用的是Avada(儿童)主题。

2 个回复
SO网友:mit2sumit

在Avada的儿童主题中,更新您的类别。php,如果其there或elsecret使用该名称创建新文件,并添加以下代码:

<?php
$current_cat = get_queried_object();

echo \'Heading: \'.$current_cat->name;

$subcategories = get_categories(
    array( \'parent\' => $current_cat->term_id )
);
if(!empty($subcategories)){
    foreach($subcategories as $cat){
        echo \'<br>\'.$cat->name.\'<br>\';
        $cat_posts = get_posts( array(
            \'posts_per_page\' => -1,
            \'category\'       => $cat->term_id
        ) );

        if ( $cat_posts ) {
            foreach ( $cat_posts as $post ) :
                echo $post->post_title.\'<br>\';
            endforeach;
        }
    }
}else{
    $cat_posts = get_posts( array(
        \'posts_per_page\' => -1,
        \'category\'       => $current_cat->term_id
    ) );

    if ( $cat_posts ) {
        foreach ( $cat_posts as $post ) :
            echo $post->post_title.\'<br>\';
        endforeach;
    }
}
它会完全按照你的要求打印出来。

更新:要将帖子作为链接获取,我们可以添加如下标记:

随处更改:

echo $post->post_title.\'<br>\';
收件人:

echo \'<a href="\'.get_permalink().\'">\'.$post->post_title.\'</a><br>\';
它会将帖子作为链接。

SO网友:HEN

您可以尝试以下操作:

它检查类别是否有父类别

<?php if ( have_posts() ) {
$this_category = get_category($cat);
?>
 <!-- If category is parent, list stuff in here -->
 <?php if ($this_category->category_parent == 0){ ?>
  <p>i am parent category</p>

 <!-- If category is child, list stuff in here -->
 <?php } elseif ($this_category->category_parent != 0) { ?>
  <p>i am child category</p>

 <?php } else { ?>
  <p>i am post in category</p>
<?php } else {
get_template_part( \'loop-templates/content\', \'none\' );
}
?>