基于URL参数的WP_QUERY

时间:2015-06-24 作者:Terrence C

我正在寻找一些帮助,以根据我在高级自定义字段中创建的字段创建查询。我想创建一个查询,该查询将通过自定义帖子类型循环,使用如下参数:

?genre=Dance&keyword=&mood=&album=
我期望从这个查询中得到的是所有带有genre 要发布的“舞蹈”元字段。由于所有其他参数都没有值,我希望在查询中忽略这些参数。如果参数更改为:

?genre=Dance&keyword=&mood=happy&album=
我希望查询范围缩小,只查找带有genre “舞蹈”的元场与mood “快乐”的元域。

这是我正在使用的代码,它给出了一些结果。将我的情绪变量添加到查询中的唯一方法是,如果我使用“AND”作为关系并将其添加为另一个数组,那么我将无法仅使用一个参数进行查询。

$queryGenre = $_GET[\'genre\'];
$paged = get_query_var( \'paged\' );
$loop = new WP_Query( array(
    \'posts_per_page\' => 5,
    \'post_type\'      => \'catalog\',
    \'paged\'          => $paged,
    \'order_by\'       => \'ASC\',
    \'meta_query\'     => array( 
        array(
            \'key\'     => \'genre\',
            \'value\'   => $queryGenre,
            \'compare\' => \'=\',
        ) 
    )
) );
while ( $loop->have_posts() ) : $loop->the_post();

2 个回复
SO网友:star

像这样试试

 $meta_query = array(\'relation\' => \'AND\');
 if($queryGenre)
   {
    $query_genre = array(
        \'key\'     => \'genre\',
        \'value\'   => $queryGenre,
        \'compare\' => \'=\',
    ) ;
     array_push($meta_query,$query_genre);
   }
   if($queryMood)
   {
    $query_mood = array(
        \'key\'     => \'mood\',
        \'value\'   => $queryMood,
        \'compare\' => \'=\',
    ) ;
     array_push($meta_query,$query_mood);
   }
最后你要做什么

array_push($args,$meta_query);

SO网友:Ravi Patel
<?php 
global $wp_query;
$meta_query = array();
$queryGenre = $_GET[\'genre\'];
$mood = $_GET[\'mood\'];
$paged = get_query_var(\'paged\', 1);
if($queryGenre):
    $meta_query[] = array(
        array(
            \'key\' => \'genre\',
            \'value\' => $queryGenre,
            \'compare\' => \'=\'
        ),
    ); 
endif;

if($mood):
    $meta_query = array(\'relation\' => \'AND\');
    $meta_query[] = array(
        array(
            \'key\' => \'mood\',
            \'value\' => $mood,
            \'compare\' => \'=\'
        ),
    ); 
endif;

$loop = new WP_Query( array(
    \'posts_per_page\' => 5,
    \'post_type\'      => \'catalog\',
    \'paged\'          => $paged,
    \'order_by\'       => \'ASC\',
    \'meta_query\'     =>$meta_query
));
if($loop->have_posts()):
while ( $loop->have_posts() ) : $loop->the_post();
    //add your code here
endwhile;
endif; 
结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post