我正在编写自己的主题,在侧边栏中,我想列出具有特定标记(“精选”)的三个帖子的详细信息。最初我试过这个:
$args = array(
'posts_per_page' => 3,
'tag' => 'featured');
$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $post ){
...
}
但这不起作用,而是我只有一个帖子,没有标签(在这种情况下是最近的帖子)。
我也尝试使用数字邮件,只是尝试列出带有标签的帖子,指定更多参数,并尝试定位类别而不是标签,其中没有一个对我有用,结果在没有列表之间,只是一个帖子,有时候全部都是。
理想情况下,我希望继续使用wp_get_recent_posts,因为它更简单,绝对是正确的工作功能。因此,我想保留这个问题,具体说明为什么我没有正确使用该函数,而不是使用get_posts或更直接查询的替代解决方案。
答案 0 :(得分:2)
我有同样的问题,虽然我并没有试图通过标签来限制。这就是我修复它的方法。查看wp_get_recent_posts
的实际函数签名(位于/wp-includes/post.php中),至少在我的Wordpress版本中显示:
function wp_get_recent_posts($num = 10)
这当然与Wordpress Codex所说的不同。但是当我用wp_get_recent_posts(5)
调用函数时,我实际上得到了最近的5个帖子。
因此,使用此功能看起来不像你想做的那样。
答案 1 :(得分:1)
可能不容易,因为函数引用没有显示任何标记参数: http://codex.wordpress.org/Function_Reference/wp_get_recent_posts
可能需要使用is_tag进一步选择:http://codex.wordpress.org/Function_Reference/is_tag
答案 2 :(得分:1)
在WP 3.9.2中,我有这个功能:
function posts_by_tag($tag, $numberposts = 0) {
$args = array( 'numberposts' => $numberposts, 'post_status' => 'publish', 'tag' => $tag );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
$posts = $posts . '<a href="' . get_permalink($recent["ID"]) . '">'
. $recent["post_title"]
. get_the_post_thumbnail($recent["ID"], "full")
. '</a>';
}
return $posts;
}
答案 3 :(得分:0)
好的,因为似乎没有答案,我使用get_posts编写了一个解决方案,其工作方式完全相同。我仍然不知道wp_get_recent_posts我做错了什么。
答案 4 :(得分:0)
是的!您可以在传递给tag
的属性中使用带有标记slug的wp_get_recent_posts()
参数来过滤该标记。这似乎完全没有记录。例如:
$args = array('tag' => 'my-tag-slug');
$recent_posts = wp_get_recent_posts($args);