自定义字段和类别查询

时间:2015-01-06 作者:Wordprez

我创建了自定义。php文件,该文件应显示对应于用户选择的所有帖子的列表。我有3个自定义字段和1个类别条件。我已经尝试了在wordpress codex数据库中可能找到的所有查询,但似乎没有任何结果。

我已经创建了3个自定义字段:a\\u field、a\\u fieldd、a\\u fielddd(当然,我已经为测试发布了带有这些字段的帖子),现在我只想显示所有带有自定义字段且具有指定值(用户选择)的帖子,并且仅当这些帖子在所选类别内时

EDIT

我有一个查询(测试只有1个值),它似乎正在工作,但有时需要000002秒甚至4秒。有什么建议吗?我知道如果使用wp\\u查询会更好,但我发现这种方法更容易修改。在本例中,我试图获取值为“5”的带有meta\\u键a\\u字段的帖子

SELECT wp_posts.ID FROM wp_posts 
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id)
WHERE 1=1 AND wp_posts.post_type = \'post\' 
AND wp_posts.post_status = \'publish\'
AND ( (wp_postmeta.meta_key = \'a_field\' 
AND  find_in_set(\'5\',wp_postmeta.meta_value)) ) 
GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10  
有什么建议吗?

1 个回复
SO网友:Milo

对于多类别处理,您需要category__in 或atax_query, 对于使用的多个自定义字段meta_query. 中介绍了这两个方面的各种选项WP_Query codex page.

$args = array(
    \'posts_per_page\' => 10,
    \'category__in\' => array( 163, 165 ),
    \'meta_query\' => array(
        array(
            \'key\' => \'a_field\',
            \'value\' => array( 1, 2 ),
            \'compare\' => \'IN\'
        ),
        array(
            \'key\' => \'a_fieldd\',
            \'value\' => 3,
            \'compare\' => \'=\'
        ),
        array(
            \'key\' => \'a_fielddd\',
            \'value\' => array( 1, 3, 5 ),
            \'compare\' => \'IN\'
        )
    )
);
$results = new WP_Query( $args );

if( $results->have_posts() ){
    while( $results->have_posts() ){
        $results->the_post();
        the_title();
    }
}

结束

相关推荐