it-swarm.com.de

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

Die wp_posts-Tabelle scheint alle Revisionen der gleichen, ok sehr ähnlichen, aber vermutlich unterschiedlichen Posts/Pages/whatever zu behalten.

Ich bin ein wenig mit SQL vertraut, aber nicht mit WordPress. Ich muss nur die Aufzeichnungen extrahieren, die auf der öffentlich zugänglichen Site erscheinen würden. Also nur die letzte Revision und nicht alle abgelösten Zeilen. Nicht sicher, wie die Felder gefiltert werden sollen. Offensichtlich etwas Komplizierteres als:

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

das hat "Duplikate" und scheint einige Sachen zu vermissen.

7
John Mee

Anstatt die Abfrage von Grund auf neu zu erstellen, ist es einfacher zu erkennen, was genau WordPress abfragt, wenn die API-Funktion 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
9
Rarst

Sie sollten dies verwenden, da Wordpress hier schwere Lasten hebt:

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

Weitere Informationen zum Hinzufügen von Argumenten zu query_posts http://codex.wordpress.org/Class_Reference/WP_Query

Sie sollten auch die Wordpress-Datenbankklasse verwenden, wenn Sie manuelle MYSQL-Abfragen erstellen. Weitere Informationen finden Sie hier: http://codex.wordpress.org/Class_Reference/wpdb Wordpress enthält auch eine großartige Funktion zum Ausblenden von Daten in Abfragen, um Ihre Operation zu schützen: esc_sql ($ string);

Sie können die Wordpress-DB-Klasse folgendermaßen verwenden:

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

Verwenden Sie $ wpdb->, bevor der Tabellenname vor dem zugewiesenen Datenbankpräfix steht. Dies ist wichtig, da Sie mithilfe von Tabellenpräfixen mehrere Wordpress-Installationen in einer Datenbank haben können. $ wpdb-> ermittelt den korrekten Präfixkontext.

0
Brian Fegter