按“类别”“按作者”显示相关帖子

时间:2017-08-07 作者:user125393

如何“按类别”“按作者”显示相关帖子?我使用这段代码,但它只是按作者的最新帖子显示相关帖子,而不是按作者类别显示相关帖子。我在互联网上做了一些研究,但没有找到答案。

function get_related_author_posts() {
global $authordata, $post;
$authors_posts = get_posts( array( \'author\' => $authordata->ID,\'post__not_in\' => array( $post->ID ), \'posts_per_page\' => 3 ) );
$output = \'<div class="rp-users">\';
foreach ( $authors_posts as $authors_post ) {
    $output .= \'<div class="rp-user-entry">\';
    $output .= get_the_post_thumbnail($authors_post->ID, \'related-post-size\');
    $output .= \'<a href="\' . get_permalink( $authors_post->ID ) . \'"class="rp-title">\' . apply_filters( \'the_title\', $authors_post->post_title, $authors_post->ID ) . \'</a>\';
    $output .= \'</div>\';
}
$output .= \'</div>\';
return $output;

1 个回复
SO网友:Cedon

听起来您想从同一作者撰写的当前帖子的相同类别中获取相关帖子。为此,您需要使用WP_Query 类,其外观如下所示:

$author_id = get_the_author();
$category_id = get_the_category();

$args = array(
    \'author\'         => $author_id,
    \'category\'       => $category_id[0],
    \'posts_per_page\' => 5,
);

$rel_posts = new WP_Query( $args );

if( $rel_posts->have_posts() ) { 
    echo \'<div class="related-posts">\' . PHP_EOL;
    echo \'<ul>\' . PHP_EOL;
    while ( $rel_posts->have-posts() ) {
        echo \'<li class="related-post"><a href="\' . esc_url( get_the_permalink() ) . \'>\' . esc_html( get_the_title() ) . \'</a></li>\' . PHP_EOL;
    }
    echo \'</ul>\';

    // Reset Post Data
    wp_reset_postdata();

    } else {
        // No Posts Found
    }
}
此代码的作用是从当前帖子中获取作者ID以及帖子的类别数组(注意:get_the_category() 即使只分配了一个数组,也将始终返回一个数组。它将返回ID、名称和Slug)。

然后我们将其输入$args 数组使用$category_id[0] 获取数组中第一个类别的ID。出于演示目的,我还告诉查询只获取5篇帖子。

然后,它将打开一个无序列表,并在找到的posts WP\\U查询中循环,并为每个包含链接的列表项创建一个列表项。完成后,我们关闭无序列表,并将post数据重置回原始数据。

注意:您可以使用. PHP_EOL 部分echo 声明。这只是在末尾添加了一个换行符,我喜欢这样做,以便于诊断,因此生成的HTML代码更易于阅读。

结束

相关推荐

author global display format

有人知道如何更改作者链接显示的格式吗?也就是说,在帖子标题下,我显示了元字段2017年5月8日,作者:Category&;视图≈ 0Author\\u昵称是此作者所有帖子的活动链接。这没关系。为此,我使用了\\u author()函数。但是,当我单击链接时,Author\\u昵称将更改为Author email。i、 e。http://myweb.com/author/Author_Emailgmail-com/作者[email protected]是作者电子邮件。因此,电子邮件正在被使用。如何更改以