Wordpress - 获取具有自定义字段的帖子的标签

时间:2012-11-01 12:17:22

标签: wordpress tags

我有一个自定义字段,比如说“情绪”,我需要显示所有“情绪”=“脾气暴躁”的帖子的标签列表。是否可以在不获取所有帖子然后为每个帖子提取标签的情况下执行此操作?

2 个答案:

答案 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