SQL-Abfrage, um nur die “aktuellen” wp_posts zu extrahieren?

Die wp_posts-Tabelle scheint alle Revisionen derselben zu behalten, ok sehr ähnlich, aber vermutlich anders, Posts / Seiten / was auch immer.

Ich bin etwas vertraut mit SQL, aber nicht mit WordPress. Ich muss nur jene Aufzeichnungen herausziehen, die auf der öffentlich zugänglichen Seite erscheinen würden; also nur die letzte Revision und nicht alle überzähligen Zeilen. Nicht sicher, wie die Felder gefiltert werden. Offensichtlich etwas komplizierter als:

select * from wp_posts where post_status in ('publish','revision') order by post_modified desc 

Das hat ‘Duplikate’ und scheint etwas zu vermissen.

Solutions Collecting From Web of "SQL-Abfrage, um nur die “aktuellen” wp_posts zu extrahieren?"

Anstatt eine Abfrage von Grund auf neu zu konstruieren, ist es einfacher zu sehen, was WordPress genau abfragt, wenn die API-function verwendet wird:

 get_posts(array( 'numberposts' => -1, )); var_dump( $wpdb->last_query ); 

Gibt folgendes SQL:

 SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') ORDER BY wp_posts.post_date DESC 

Sie sollten dies verwenden, da WordPress hier schwer belastet:

 $args = array( 'showposts' => 10, ); $posts = query_posts(); var_dump($posts); 

Sie erfahren mehr über das Hinzufügen von Argumenten zu query_posts http://codex.wordpress.org/Class_Reference/WP_Query

Sie sollten auch die WordPress-databaseklasse verwenden, wenn Sie manuelle MYSQL-Abfragen erstellen. Sie können mehr hier lernen: http://codex.wordpress.org/Class_Reference/wpdb WordPress enthält auch eine großartige function zum Entkommen von Daten in Abfragen, um Ihre Operation sicher zu halten: esc_sql ($ string);

Sie können die WordPress db-class wie folgt verwenden:

 global $wpdb; $results = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish'"); 

Wenn Sie $ wpdb-> vor Ihrem Tabellennamen verwenden, wird das zugewiesene databasepräfix vorangestellt. Dies ist wichtig, da Sie mehrere WordPress-Installationen in einer database mithilfe von Tabellenpräfixen erstellen können. $ wpdb-> wird den korrekten Präfixkontext erfassen.