2017-05-11 103 views
0

我正在使用大型產品數據庫的WordPress網站。我需要列出所有具有單一分類術語例外的產品。使用wp_query()會創建一個巨大的對象並需要很長時間。另外,出於某種原因,我的論點不會排除我不想列出的一個分類術語的產品。這裏是我當前的查詢:優化Wordpress查詢

$args = array(
    'post_type' => 'products', 
    'post_status' => 'publish', 
    'orderby' => 'post_title', 
    'numberposts' => -1, 
    'tax_query' => array(
     'taxonomy' => 'product-main-cats', 
     'field' => 'term_id', 
     'terms' => array(23), 
     'operator' => 'NOT IN', 
    ), 
); 
$prods = new WP_Query($args); 

我想用類WPDB改寫這個查詢,以便我只取正是我需要爲我的上市,而不是巨大的wp_query()對象。我需要從wp_post表中唯一的列是ID和post_title。我只是不確定mySQL語法,特別是排除與單個分類術語相關的帖子。任何人都可以幫我重寫這個嗎?

TIA!

回答

0

你可以通過$wpdb來寫這個查詢,我在你的WP_Query下面附加了一個sql查詢版本。

global $wpdb; 
$results = $wpdb->get_results("SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'products' AND ((wp_posts.post_status = 'publish')) ORDER BY wp_posts.post_title DESC", ARRAY_A); 
+0

謝謝艾哈邁德,這有很大的幫助,但如何分類查詢取消資格屬於某一期限(S)的帖子? – lenrooney

+0

另外,我確實解決了tax_query無效的問題。這只是一個語法錯誤,實際的稅務查詢參數必須在他們自己的數組中。 – lenrooney