我有一个自定义字段,比如说“情绪”,我需要显示所有“情绪”=“脾气暴躁”的帖子的标签列表。是否可以在不获取所有帖子然后为每个帖子提取标签的情况下执行此操作?
答案 0 :(得分:1)
您可以使用函数get_posts();
$args = array(
'meta_key' => 'mood',
'meta_value' => 'grumpy',
);
$your_posts = get_posts( $args );
答案 1 :(得分:0)
未经测试,但这应该达到你想要的效果。只是留意拼写错误和错过的冒号!
虽然你没有得到整个帖子,你仍然需要在数据库中查询'mood'='grumpy'的帖子的ID,所以除非你有很多帖子,否则它可能更容易答案是@Dorel给出的。
$query = $wpdb->prepare('
SELECT ID
FROM %1$s
LEFT JOIN %2$s
ON %1$s.ID = %2$s.post_id
WHERE %2$s.meta_key = "mood"
AND %2$s.meta_value = "grumpy"
', $wpdb->posts, $wpdb->postmeta
);
$ids = $wpdb->get_col($query);
if(!empty($ids)) : foreach($ids as $post_id) :
$tags = wp_get_post_tags($post_id, $args);
if(!empty($ids)) : foreach($tags as $tag) :
$tags[] = $tag->name;
endforeach;
endif;
endforeach;
endif;
// Now you have an array of Tag names, output them as you wish
wp_get_post_tags
= http://codex.wordpress.org/Function_Reference/wp_get_post_tags的法典
wp_get_object_terms
的法典(查看$args
可用的wp_get_post_tags
)=
http://codex.wordpress.org/Function_Reference/wp_get_object_terms#Argument_Options