簡體   English   中英

如何在沒有過濾器的情況下運行 Wordpress wp_query?

[英]How to run a Wordpress wp_query without filters?

我有一個自定義 Wordpress 插件,它搜索自定義類型下載的所有帖子,我需要查詢以找到所有帖子:

  $args = array(
    'post_type' => 'download',
    'post_status' => 'publish',
    'posts_per_page' => 10,
    'suppress_filters' => true,
    'paged' => $request['id'],
    'suppress_filters' => true
  );

$posts = new WP_Query( $args );

不幸的是,當我運行查詢時,一個插件 Easy Digital Downloads 覆蓋了我的查詢以包含 post__not_in,它排除了我實際需要的一些結果:

"post__not_in": [
  "1241",
  "1343",
  "1452",
  "1467",
  "1247"
  ]

我可以看到生成的 SQL 如下所示:

"sql_query": "SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.ID NOT IN (1241,1343,1452,1467,1247) AND wp_posts.post_type = 'download' AND ((wp_posts.post_status = 'publish'))  ORDER BY wp_posts.post_date DESC LIMIT 0, 100"

我曾嘗試停用 EDD,這使我的查詢按預期工作,但我認為添加'suppress_filters' => true應該在應用過濾器時撤消,但我一定是做錯了什么。 我還檢查了 EDD 生成的pre_get_posts (只有一個)並將它們關閉,但這也不起作用。

如何在沒有排除的情況下獲得實際的完整結果? 我樂於接受各種想法。

就我而言,我試圖繞過Groups插件(通過 itthinx)添加的過濾器,以及帶有$posts = new \\WP_Query( $args );'suppress_filters' => true參數$posts = new \\WP_Query( $args ); 完成了工作。

您也可以嘗試get_posts()函數,它使用與WP_Query()相同(或相似?)的$args參數返回一個簡單的帖子數組。 默認情況下,對於get_posts()函數, suppress_filters get_posts()true 盡管它在內部使用了WP_Query() ,但它的使用目的是不與主 WP 查詢循環發生沖突。 對我來說, get_posts()無需顯式提供'suppress_filters' => true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM