按子类别分隔类别的帖子

时间:2016-07-11 作者:MIke

我通过获取页面标题并将其与类别名称匹配来动态生成我的类别帖子。我发布的类别有时有一个子类别,现在我需要按组来分隔这个子类别。我正在使用此代码。

<ul>
<?php 
    global $post;
    $post_slug = get_the_title(); 
    $args = array ( \'category_name\' => $post_slug, \'posts_per_page\' => -1, \'orderby\' => title, \'order\' => ASC);
    $myposts = get_posts( $args );
    foreach( $myposts as $post ) :  setup_postdata($post); ?>
    <li>
        <strong><?php the_title(); ?></strong>
        <?php the_content(); ?>
    </li>
<?php endforeach; ?>
</ul>
我只需要使用页面标题调用我的类别。因为我使用的模板发布不同的类别,并通过页面的名称标题控制它。不太确定我是否可以将其转换为category => ID

请参阅链接here 用于解释和模拟

找到这个thread 不确定它是否适合我所做的?还有这个one

3 个回复
SO网友:Milo

您可以使用get_term_by 获取类别依据name-

$category = get_term_by( \'name\', $post_slug, \'category\' );
echo $category->term_id;

SO网友:dg4220

在父帖子/类别循环中,使用此选项生成子帖子/类别的帖子标题/类别名称列表:

$taxonomy_name = \'category\';
$this_term = get_term_by( \'name\', get_the_title(), $taxonomy_name );

$term_id = $this_term->term_id;
$termchildren = get_term_children( $term_id, $taxonomy_name );

echo \'<ul>\';
foreach ( $termchildren as $child ) {//get the children and search the posts by title

  $term = get_term_by( \'id\', $child, $taxonomy_name );
  $args = array ( \'post_title\' => $term->name, \'orderby\' => title, \'order\' => ASC);
  $myposts = get_posts( $args );
  foreach( $myposts as $post ) :  setup_postdata($post); ?>
    <li>
      <strong><?php the_title(); ?></strong>
      <?php the_content(); ?>
    </li>
<?php endforeach; ?>

}
echo \'</ul>\';
更新:让我们再试一次。在父帖子/类别循环中使用此。

$taxonomy_name = \'category\';
$this_term = get_term_by( \'name\', get_the_title( get_the_ID() ), $taxonomy_name );

$categories = get_categories( array(
        \'orderby\' => \'name\',
        \'child_of\'  => $this_term->term_ID,
    ) );

if ( ! empty( $categories ) ) {

    foreach ( $categories as $category ) {
        $this_post = get_page_by_title( $category->name, OBJECT, \'post\');
        echo \'<h3>\' . $this_post ->post_title . \'</h3>\';

    }
}

SO网友:yomisimie

之前在一个网站上这样做过。以下是我所做的:
检查是否有与标题同名的类别:

if( term_exists(get_the_title(), \'category\' ))
如果有,我就按slug分类:

$cat = get_term_by("slug", $post->post_name, "category"); 
检查类别是否有父类别或是否为父类别:

if($cat->parent !== 0) {
    $catID = $cat->parent;
} else {
    $catID = $cat->term_id;
}  
然后由所述父级检索类别:

$args = array(
                \'type\'                      => \'post\',
                \'child_of\'                  => $catID,
                \'hide_empty\'                  => false,
                \'hierarchical\'              => true,
                \'exclude\'                   => \'1\'
            );
$categories = get_categories($args);
然后是一个带有链接的简单循环:

foreach($categories as $categorie) {
    if($categorie->slug == $post->post_name) {
        $clasa = "class=\'current\'";
    } else {
        $clasa = "";
    }
    echo "<a ".$clasa." href=\'".home_url("/").$slug."/".$categorie->slug."\'>".$categorie->name."</a>";
}
希望这就是你要找的。

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果