我正在寻找一些帮助,以根据我在高级自定义字段中创建的字段创建查询。我想创建一个查询,该查询将通过自定义帖子类型循环,使用如下参数:
?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();
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;