it-swarm.com.de

Kategorien in dieser MySQL-Abfrage nicht zulassen

Ich versuche, ein Plugin zu ändern, das eine Archivliste generiert, sodass nur eine Kategorie angezeigt wird, sodass es ein Archiv mit einer einzigen Kategorie darstellt.

In der alten Version des Plugins wurde eine get_posts-Abfrage verwendet. Daher war es einfach, Kategorien von Posts zu deaktivieren:

$rawposts = get_posts( 'numberposts=-1&category=-4,-6,-7,-9' );

Die neue Version des Plugins verwendet diese Datenbankabfrage:

SELECT ID, post_date, post_date_gmt, comment_status, comment_count FROM 
$wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND post_password =

Wie verbiete ich eine Datenbankabfrage für mehrere Kategorien?

1
markratledge

Sie können die in WP 3.1 eingeführte Funktion get_tax_sql () verwenden:

$tax_query = array(
  array(
    'taxonomy' => 'category',
    'terms' => array( 4, 6, 7, 9 ),
    'operator' => 'NOT IN'
  )
);

$clauses = get_tax_sql( $tax_query, $wpdb->posts, 'ID' );

...
"SELECT ID, post_date, post_date_gmt, comment_status, comment_count
FROM $wpdb->posts {$clauses['join']}
WHERE post_status = 'publish'
AND post_type = 'post'
{$clauses['where']}
"
...

(nicht getestet)

3
scribu