SQL-запрос для извлечения только «текущих» wp_posts?

Таблица wp_posts, похоже, сохраняет все изменения одного и того же, ok очень похоже, но, по-видимому, разные, posts / pages / whatever.

Я немного знаком с SQL, но не с WordPress. Мне нужно извлечь только те записи, которые появятся на публике; так что только последняя ревизия, а не все свернутые строки. Не уверен, как фильтровать поля. Очевидно, что-то более сложное, чем:

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

который имеет «дубликаты» и, кажется, пропускает некоторые вещи.

Solutions Collecting From Web of "SQL-запрос для извлечения только «текущих» wp_posts?"

Вместо того, чтобы создавать запрос с нуля, проще понять, что именно WordPress запрашивает при использовании функции API:

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

Дает следующий 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 

Вы должны использовать это, поскольку WordPress делает тяжелый подъем здесь:

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

Вы узнаете больше о добавлении аргументов в query_posts http://codex.wordpress.org/Class_Reference/WP_Query

Вы также должны использовать класс базы данных WordPress при создании ручных запросов MYSQL. Вы можете узнать больше здесь: http://codex.wordpress.org/Class_Reference/wpdb WordPress также включает отличную функцию для экранирования данных в запросах, чтобы обеспечить безопасность вашей работы: esc_sql ($ string);

Вы можете использовать класс Word для db следующим образом:

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

Используя $ wpdb-> до того, как имя таблицы добавит назначенный префикс базы данных. Это важно, потому что вы можете иметь несколько установок WordPress в одной базе данных с использованием префиксов таблиц. $ wpdb-> захватит правильный префиксный контекст.