問題描述

我已經註冊了一個名為”node” 的自定義帖子型別。

當我建立一個基本的 WP_Query 來獲取該型別的帖子時,它的工作正常。例:

$args = array(
'post_status' => 'publish',
'post_type' => 'node');

$query = new WP_Query($args);

這將獲得”node” 型別的所有發表的帖子。

但是,一旦我將它與搜尋結合起來,就不會返回任何東西。例:

$args = array(
'post_status' => 'publish',
'post_type' => 'node',
's' => 'My search term');

$query = new WP_Query($args);

這將不會得到任何東西,雖然它應該得到幾個型別’node’ 包含 「我的搜尋字詞」 的帖子。

據我所知,只要在 $ args 中包含”s” 引數,就會自動將帖子型別設定為”post” 和”page” 。如果我列印出一個 $查詢的 var_dump,它顯示如下:

沒有”s”:

object(WP_Query)
  public 'query' =>
    array (size=2)
      'post_status' => string 'publish' (length=7)
      'post_type' => string 'node' (length=4)
  public 'query_vars' =>
    array (size=63)
      'post_status' => string 'publish' (length=7)
      'post_type' => string 'node' (length=4)
...

用”s”:

object(WP_Query)
  public 'query' =>
    array (size=2)
      'post_status' => string 'publish' (length=7)
      's' => string 'My search term' (length=14)
      'post_type' => string 'node' (length=4)
  public 'query_vars' =>
    array (size=66)
      'post_status' => string 'publish' (length=7)
      's' => string 'My search term' (length=14)
      'post_type' =>
        array (size=2)
          0 => string 'post' (length=4)
          1 => string 'page' (length=4)
...

所以 WordPress 似乎在涉及到搜尋時就會覆蓋帖子型別。

我該如何解決?

最佳解決辦法

你是對的,我在一個乾淨的 WordPress 安裝嘗試,它的工作原理。

似乎像我在環境中使用的外掛之一是掛在自己的一個 pre-query 事件中。

謝謝!

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。