Как сделать запрос для всех сообщений в пользовательских категориях WordPress

mysql wordpress

4392 просмотра

3 ответа

1895 Репутация автора

У меня есть база данных WordPress, которую мне нужно запросить с чистым MySQL, чтобы выбрать все посты из пользовательской таксономии, называемой guide_category. Я также хочу упорядочить результаты по wp_terms.nameи в рамках этого заказа по wp_posts.name. Сообщение может находиться в нескольких категориях.

Таким образом, результаты должны выглядеть примерно так:

Category_A
    Post A
    Post B
    Post C
Category_B
    Post A
    Post B
    Post C
Category_C
    Post A
    Post B
    Post C
Автор: bigmike7801 Источник Размещён: 14.07.2016 05:28

Ответы (3)


0 плюса

875 Репутация автора

Просматривая класс WP_Tax_Query в /wp-include/taxonomy.php, я обнаружил, что есть опция include_children, которая по умолчанию имеет значение true. Я изменил свой оригинальный вызов get_posts () следующим образом, и он прекрасно работает:

$pages = get_posts(array(
  'post_type' => 'post'
  'tax_query' => array(
    array(
      'taxonomy' => 'taxonomy-name'
    )
  )
));

Список дополнительных параметров запроса: http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

Автор: Hassan ALi Размещён: 18.07.2016 04:32

8 плюса

1691 Репутация автора

global $wpdb;
$query = "
SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON
($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON
($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->posts.post_status = 'publish'
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id = 1
ORDER BY post_date DESC
";

$results = $wpdb->get_results($query);

замените term_taxonomy.term_id = 1 вашим идентификатором texonomy, возможно, он будет работать для вас

Автор: R.K.Bhardwaj Размещён: 20.07.2016 09:09

1 плюс

1895 Репутация автора

Решение

Вот что в итоге сработало для меня:

SELECT name, post_title
FROM wp_term_taxonomy AS cat_term_taxonomy
INNER JOIN wp_terms AS cat_terms ON cat_term_taxonomy.term_id = cat_terms.term_id
INNER JOIN wp_term_relationships AS cat_term_relationships ON cat_term_taxonomy.term_taxonomy_id = cat_term_relationships.term_taxonomy_id
INNER JOIN wp_posts AS cat_posts ON cat_term_relationships.object_id = cat_posts.ID
INNER JOIN wp_postmeta AS meta ON cat_posts.ID = meta.post_id
WHERE cat_posts.post_status =  'publish'
AND cat_term_taxonomy.taxonomy =  'guide_category'
GROUP BY name, post_title
ORDER BY name, post_title
Автор: bigmike7801 Размещён: 28.07.2016 05:46
Вопросы из категории :
32x32