[英]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.