自定义wp_query,其中meta_key是可变的或不需要的

时间:2019-09-07 22:01:33

标签: wordpress categories meta-query

为使自定义帖子类型可过滤和可排序,我创建了一个自定义查询,该查询基于url中的变量(由$ _GET访问)工作。 一种具体情况打破了这一局面。这是(未指定)元密钥。对于排序,在自定义字段上进行排序时需要使用metakey。在其他情况下,可以忽略元键。但是,当我将变量设置为空时,查询不会产生任何帖子。如何处理空的meta_key?

到目前为止,我试图将变量设置为空($ variable =''); 我将变量设置为null;我已经使用了未设置。

if (isset($_GET["key"]) || isset($_GET["orderby"])){
if (isset($_GET["key"])) {$key = $_GET["key"];}
else {$key = '';}
if (isset($_GET["value"])) {$value = $_GET["value"]; echo $value;}
else {$value = '';}
if (isset($_GET["orderby"])) {$orderby = $_GET["orderby"];}
if ($orderby='meta_value'){$meta_key='averagerating';}
else {$orderby='';$meta_key='';}
if (isset($_GET["order"])) {$order = $_GET["order"];}
else {$order='';}
$cat = get_queried_object();
if (!empty($cat) && !is_post_type_archive('bedrijf')){
$category = $cat->name;
}

if (is_post_type_archive('bedrijf')){
$category = '';
$terms = get_terms( 'bedrijfs-category' ); 
    // convert array of term objects to array of term IDs
$category = wp_list_pluck( $terms, 'name' );    
}
global $post;
                $the_query ='';
                $args = array(
                    'post_type' => 'bedrijf',
                    'posts_per_page' => 10,
                    'meta_key' => ''.$meta_key.'',
                    'orderby'   => ''.$orderby.'',
                    'order' => ''.$order.'',
                    'tax_query' => array(
                                        array(
                                            'taxonomy' => 'bedrijfs-category',
                                            'field'    => 'name',
                                            'terms'    => $category
                                            )
                                        ),
                    'meta_query' => array(
                                        array(
                                            'key'=> ''.$key.'', 
                                            'value' => ''.$value.'',
                                            'compare' => 'LIKE'
                        )   
                    )
                );
 $the_query = new WP_Query($args); }

我想要的是在meta_key =>''。$ meta_key。''中插入空变量的解决方案,因此循环跳过meta_key部分。

1 个答案:

答案 0 :(得分:0)

在$ args中定义meta_query或tax_query 和(示例):

if($_GET['some_name'] !== ''){
  $meta_query = array(
    array(
         'taxonomy' => 'bedrijfs-category',
         'field'    => 'name',
         'terms'    => $category
    )
  );
  //define args with some_one para exists
  $args = array(
        'post_type' => 'bedrijf',
        'posts_per_page' => 10,
        'meta_key' => ''.$meta_key.'',
        'orderby'   => ''.$orderby.'',
        'order' => ''.$order.'',
        'meta_query' => $meta_query
  );

}else{

    //define args with some_one para not exists
    $args = array(
        'post_type' => 'bedrijf',
        'posts_per_page' => 10,
        'meta_key' => ''.$meta_key.'',
        'orderby'   => ''.$orderby.'',
        'order' => ''.$order.''
  );

 }

tax_query就是这样