2017-05-11 7 views
0

Ich arbeite an einer WordPress-Site mit einer großen Produktdatenbank. Ich muss eine Auflistung aller Produkte mit einer Ausnahme für einzelne Taxonomieausdrücke erstellen. Die Verwendung von wp_query() erzeugt ein riesiges Objekt und dauert sehr lange. Aus irgendeinem Grund schließen meine Argumente Produkte nicht aus dem einen Taxonomiebegriff aus, den ich nicht aufgelistet haben möchte. Hier ist meine aktuelle Abfrage:Eine Wordpress-Abfrage optimieren

$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); 

Ich mag diese Abfrage neu zu schreiben, die wpdb-Klasse so, dass ich nur genau holen, was ich für meine Auflistung benötigen statt dem großen wp_query() Objekt. Die einzigen Spalten, die ich aus der Tabelle wp_post benötige, sind ID und post_title. Ich bin mir der mySQL-Syntax nicht sicher, insbesondere, um die mit dem einzelnen Taxonomiebegriff verbundenen Beiträge auszuschließen. Kann mir jemand helfen, dies neu zu schreiben?

TIA!

Antwort

0

Sie können diese Abfrage über $wpdb schreiben, ich habe unten eine SQL-Abfrage-Version Ihrer WP_Query beigefügt.

+0

Dank Ahmed, das hilft viel, aber was ist mit der Taxonomie-Abfrage, Beiträge zu einem bestimmten Begriff (en) zu disqualifizieren? – lenrooney

+0

Auch habe ich das Problem mit der Tax_query nicht funktioniert. Es war einfach ein Syntaxfehler, die tatsächlichen Steuerabfrageargumente müssen in ihrem eigenen Array sein. – lenrooney