搜索查询的一个非常奇怪的问题

时间:2016-12-24 作者:Fahad Sohail

我有两种自定义的帖子类型。businesses profiles 共享单个分类法locations.

当我使用WP Query检索常见帖子时,它会返回常见帖子。这是我正在使用的查询。

$queryargs = array(
    \'post_type\' => \'profile\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'ait-locations\',
            \'field\'    => \'term_id\',
            \'terms\'    =>  array( 1071 ),
        ),
    ),
);
此查询返回两篇文章。在这之前一切都很好。

BUT 当我使用wordpress搜索做同样的事情时,结果没有找到帖子。

Here 是我在wordpress帖子中使用的URL

?s=&post_type=profile&ait-locations=1071
IF 如果在搜索页面上我尝试global $wp_query; 然后在返回的搜索页面上回显当前正在执行的查询

array(3) {
  ["s"]=>
  string(0) ""
  ["post_type"]=>
  string(7) "profile"
  ["ait-locations"]=>
  string(4) "1071"
}

1 个回复
SO网友:Tunji

默认情况下,WordPress按关键字搜索。要使用自定义查询变量进行搜索,必须使用query_vars

function wpse250276_register_query_vars( $vars ) {
    $vars[] = \'ait-locations\';
    return $vars;
}
add_filter( \'query_vars\', \'wpse250276_register_query_vars\' );
那么你需要使用pre_get_posts 要更改搜索查询并包括自定义分类过滤器,请使用get_query_var

function wpse250276_pre_get_posts($query) {
    if ($query->is_search) {

        $tax_query = array();
        // add taxonomy query elements
        if( !empty( get_query_var( \'ait-locations\' ) ) ){
            $tax_query[] = array(
                \'taxonomy\'  => \'ait-locations\',
                \'field\'     => \'term_id\',
                \'terms\'     => array( get_query_var( \'city\' ) ),
            );

            $query->set( \'tax_query\', $tax_query );
        }
    }
    return $query;
}
add_filter( \'pre_get_posts\',\'wpse250276_pre_get_posts\' );

相关推荐

Search results for ACF data

是否可以编写查询以仅从一个自定义字段中搜索数据?我有一个名为“讲座”的CPT,我只想搜索名为“关键字”的自定义字段中的数据,我有:<?php $args = array( \'post_type\' => \'lectures\', \'order\' => \'ASC\', \'posts_per_page\' => -1, \'