在带有类别链接的Foreach循环中显示帖子类别

时间:2014-05-02 作者:Hussain Ansari

我有以下代码来显示当前作者的帖子列表,其中包含帖子缩略图、帖子标题、帖子日期和帖子类别。

function my_get_display_author_posts() {
global $authordata, $post;

$authors_posts = get_posts( array( \'author\' => $authordata->ID,\'posts_per_page\' => 6, \'post__not_in\' => array( $post->ID ) ) );

$output = \'<ul>\';

foreach ( $authors_posts as $authors_post ) {

    setup_postdata($authors_post);

    // Build a comma separated categories list
    // You can customize as needed
    $categories = get_the_category();
    $categories_string = \'\';
    $separator = \', \';
    if($categories) {
        foreach($categories as $category){
            $categories_string .= $category->cat_name.$separator;
        }
        $categories_string = trim($categories_string, $separator);
    }

    $image = wp_get_attachment_image_src( get_post_thumbnail_id( $authors_post->ID ), \'related-author\' );
    $output .= \'<li>
    <a class="title" href="\' . get_permalink( $authors_post->ID ) . \'">
    <strong>\' . apply_filters( \'the_title\', $authors_post->post_title, $authors_post->ID ) . \'</strong>
    <img src="\'.$image[0].\'"> 
    </a>
    <span>\'.get_the_time(\'m.d.y\').\'</span> \'.$categories_string.\'
    </li>\';
}

wp_reset_postdata();

$output .= \'</ul>\';

return $output;}
请按照以下链接查看输出

https://www.evernote.com/shard/s250/sh/ba2c1f8f-c06e-44ef-b004-c0432b7d3a5f/12febb0db08fd9a749eee779051cb007/deep/0/Fullscreen-02-05-14-3-35-pm.png

我想用类别链接显示相关的帖子类别。

谢谢

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你在和哨所战斗globals、 喜欢$post, 并且没有正确设置。创建适当的Loop 使用WP_Query 和使用Core template tags 只要有可能,问题就会解决。

$authors_posts = new WP_Query(
  array( 
    \'author\' => 7,
    \'posts_per_page\' => 6,
    \'post__not_in\' => array( $post->ID ) 
  ) 
);

$output = \'<ul>\';

while ($authors_posts->have_posts()) {
  $authors_posts->the_post();

  // Build a comma separated categories list
  // You can customize as needed
  $categories_string = get_the_category_list();

  $image = wp_get_attachment_image_src( get_post_thumbnail_id(), \'related-author\' );
  $output .= \'<li>
    <a class="title" href="\' . get_permalink() . \'">
    <strong>\' . get_the_title() . \'</strong>
    <img src="\'.$image[0].\'"> 
    </a>
    <span>\'.get_the_time(\'m.d.y\').\'</span> \'.$categories_string.\'
  </li>\';
}

wp_reset_postdata();

$output .= \'</ul>\';
另外,请注意,您的代码比需要的复杂得多,基本上是以有限的形式重新创建核心功能。

SO网友:Ravi Patel

sintax : <?php get_the_category_list( $separator, $parents, $post_id ); ?>

如果要使用“,”分隔代码:

<?php echo get_the_category_list( \',\', \'\', $post->ID ); ?>
或者如果自定义post分类法类别使用:artist\\u category是自定义post分类法

<?php echo get_the_term_list($post->ID, \'artist_category\',\'<li>\',\',</li><li>\',\'</li>\'); ?>

结束

相关推荐

有没有办法为一个博客运行upgrade.php?

我今天刚运行了verion 3.9的自动更新,但“网络更新”有问题。我似乎有防火墙或网络问题,出现以下错误:您的服务器可能无法连接到其上运行的站点。错误消息:无法连接到主机不管怎样,有没有办法在每个博客上运行数据库更新?我可以使用特殊的URL吗?我可以从shell命令行执行吗?在一个旧的论坛帖子上,有人建议更新。php在您第一次登录博客管理员时自动运行(即使尚未运行网络更新)。我想知道这是不是真的。谢谢