WP_Query‘s’参数不适用于自定义帖子类型

时间:2018-05-14 作者:Tomas Cerniauskas

我有一个自定义的帖子类型“property”。我正在尝试搜索它,但它不适用于wp\\u查询参数“s”。

$wp_query = Wp_Query([\'post_type\' => \'property\', \'s\' => \'test\']);
它可以与其他Wp\\U查询参数配合使用,如下所示:

$wp_query = Wp_Query([
    \'post_type\' => \'property\',
    [
        \'taxonomy\' => \'property_usage_type\',
        \'field\' => \'id\',
        \'terms\' => $_GET[\'sb-usage-type\'],
    ]
]);
它也适用于除“s”之外的其他参数。但是“s”与“post”post type一起使用。我还尝试回显sql查询-$wp_query->request 但除非我去掉“s”,否则它会呼出任何东西。

2 个回复
SO网友:Bikash Waiba

你可以这样做,

$args = array(
      \'post_type\' => \'tribe_events\', 
      \'post_per_page\' =>  get_option(\'posts_per_page\'), 
       \'s\' => get_search_query()
   );

$query = new WP_Query($args); // Use new keyword and you need to use WP_Query not Wp_Query

while($query->have_posts()): $query->the_post();

     the_title();

endwhile;wp_reset_postdata(); 
我用这个search.php 文件工作没有任何问题。

SO网友:IvanMunoz

我试图重现这个问题,你是对的,我对s参数+post\\u类型过滤器也有同样的问题。

我想Wordpress会出于任何原因这样做。

您可以通过将其添加到模板或函数中来解决此问题。php

add_filter( \'pre_get_posts\', \'tgm_io_cpt_search\' );
/**
 * This function modifies the main WordPress query to include an array of
 * post types instead of the default \'post\' post type.
 *
 * @param object $query  The original query.
 * @return object $query The amended query.
 */
function tgm_io_cpt_search( $query ) {

    if ( $query->is_search ) {
        $query->set( \'post_type\', array( \'property\' ) );
    }

    return $query;

}

$the_query = new WP_Query( array(\'s\' => \'test\') );
参考代码:https://thomasgriffin.io/how-to-include-custom-post-types-in-wordpress-search-results/

结束

相关推荐

如何为class-wp-query.php追踪这些PHP通知和警告的原因?

我的WordPress调试。日志文件中充满了这些PHP通知,间隔大约15分钟,然后是几个小时…[23-Mar-2018 05:33:00 UTC] PHP Notice: Trying to get property of non-object in /home/mysite/public_html/wp-includes/class-wp-query.php on line 3736 [23-Mar-2018 05:33:00 UTC] PHP Notice: Trying to get p