WP_QUERY:使用自定义字段和/或自定义分类进行搜索和筛选

时间:2016-10-28 作者:TheBigK

我无法使用现有的答案找到我的方法;因此,无论如何,决定发布一个新问题。我想要实现的目标可能已经完成了20000次;但我可能只是个白痴。无论如何-

我拥有的:1。自定义帖子类型:“作业”2。每个“作业”都有:custom\\u field\\u 1:location,custom\\u field\\u 2:company3。它还有:custom\\u taxonomy\\u 1:skills,custom\\u taxonomy\\u 2:Disciplies

就我的一生而言,我不知道如何编写WP\\U查询来帮助我检索具有以下内容的帖子:custom\\u field\\u 1、custom\\u taxonomy\\u 1和custom\\u taxonomy\\u 2。

比如在“纽约”寻找工作,在“PHP+WordPress”和“计算机科学工程师”中寻找技能。

我的主要困惑是,WP\\u query的“meta\\u query”和“tax\\u query”参数之间如何存在“AND”/“OR”关系。

非常感谢你的帮助。谢谢

以下是我的示例代码:

    $args = array(
    \'post_type\' => array(\'job\'),
    \'post_status\' => array(\'publish\'),
    \'posts_per_page\' => \'5\',

     \'meta_query\' => array(
          \'relation\' => \'AND\',
           array(
               \'key\' => \'location\',
               \'value\' => $search_location, 
               \'compare\' => \'LIKE\',
               ),
          array(
               \'key\' => \'company\',
               \'value\' => $search_company, 
               \'compare\' => \'LIKE\',
               ),     
        ),
     \'tax_query\' => array(
        \'relation\' => \'AND\',
         array(
          \'taxonomy\' => \'skills\',
          \'field\'    => \'slug\', 
          \'terms\'    => $search_skills,
          \'operator\' => \'IN\'
         ),
        array(
                 \'taxonomy\' => \'disciplines\',
          \'field\'    => \'slug\', 
          \'terms\'    => $search_disciplines,
          \'operator\' => \'IN\'
),
    );

1 个回复
SO网友:Ivijan Stefan Stipić

也许这个例子可以帮助:

<?php

global $wp_query; // get the global object

$thesearch = get_search_query(); // get the string searched

// merge them with one or several meta_queries to meet your demand
$args = array_merge( $wp_query->query, array( 
   \'meta_query\' => array(
    array(
        \'key\' => \'field_to_seach\',
        \'value\' => $thesearch,
        \'compare\' => \'IN\'
    )
)
    ));
query_posts( $args ); // alter the main query to include your custom parameters

?>

UPDATE:

这确实是一种很糟糕的做法,但在一些定制作品中,你可以在一些非常罕见的场合使用它。

Alos阅读此注释:

注意:此函数将完全覆盖主查询,不供插件或主题使用。它修改主查询的过于简单的方法可能会有问题,应该尽可能避免。在大多数情况下,有更好、更高性能的选项来修改主查询,例如通过WP\\u查询中的“pre\\u get\\u posts”操作。

这不能在WordPress循环中使用。

More about it here