查询分类中具有元值的自定义帖子类型对象

时间:2013-07-22 作者:kytdesigner

我想从帖子类型中获取所有帖子book 在自定义分类法中book_tags 使用meta键lang 以及元价值en.

我的代码:

<?php 
$args = array( 
    \'post_type\'      => \'book\',
    \'posts_per_page\' => 40,
    \'paged\'          => "$paged", 

    \'meta_query\'     => array(
        array( 
            \'key\'     => \'lang\',
            \'value\'   => \'en\',
            \'compare\' => \'LIKE\'
        )
    ),
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'book_tags\',
            \'field\'    => \'slug\',
            \'terms\'    => get_queried_object()->slug
        )
    )
);

$additional_loop = new WP_Query($args); 

while ($additional_loop->have_posts()) : 
    $additional_loop->the_post();
这不管用?为什么?

如果我删除“meta\\u query”,它就会工作。“meta\\u查询”中是否存在错误?

1 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

因为在你的评论中,你说你只想要带有meta键的帖子lang=en 在自定义分类页面上,最简单的方法是使用pre_get_posts 在运行之前。

function wpa_107371_meta_query( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    // only change the query on a custom taxonomy
    // can check for a specific taxonomy if desired
    if ( is_tax() ) {
        //define our meta query
              $meta_query = array(
                  array(           // needs this nested array syntax to work
                    \'key\'    => \'lang\',
                    \'value\'  => \'en\',
                    \'compare\'=> \'=\',
                  ),
              );
         $query->set(\'meta_query\', $meta_query);
        return;
    }

}
add_action( \'pre_get_posts\', \'wpa_107371_meta_query\' );

结束

相关推荐