Как получить популярные сообщения для выбранных категорий в WordPress? - PullRequest
0 голосов
/ 18 декабря 2010

Я пытаюсь получить популярные сообщения, используя количество комментариев. Я также хочу исключить некоторые категории из запроса. Любая идея, как этого достичь.

Какой будет запрос для исключения определенных категорий? например, я хочу, чтобы запрос не включал имена категорий здоровье и авто

SELECT ID, post_title, COUNT ($ wpdb-> comments.comment_post_ID) AS 'stammy' из $ wpdb-> сообщений, $ wpdb-> comments WHERE comment_approved = '1' И $ wpdb-> posts.ID = $ wpdb-> comments.comment_post_ID И post_status = 'опубликовать' И post_date <'$ now' И post_date </p>

Ответы [ 2 ]

2 голосов
/ 18 декабря 2010

В WordPress есть 3 доступные функции, которые вы можете использовать для этого .. query_posts, get_posts или WP_Query, чтобы вернуть выбор постов, упорядоченных по количеству комментариев, нет необходимости в запросе SQL ..

<?php
$my_query = new WP_Query;
$my_query->query( array( 
    'cat' => '1,2,3,-4,-5,-6',
    'orderby' => 'comment_count',
    'order' => 'desc'
) );
if( $my_query->have_posts() ) :
    while( $my_query->have_posts() ) : $my_query->the_post();

        ?>
        <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <?php the_title(); ?><br />
            <?php the_content(); ?>
        </div>
        <?php

    endwhile;
endif;
wp_reset_query();
?>

1, 2 и 3 - категории для включения, 4, 5 и 6 - исключения, отрицательное значение указывает на исключение, нормальные неотрицательные значения - включения.

См. Здесь для другихвозможные параметры для запроса.
http://codex.wordpress.org/Function_Reference/query_posts

Также здесь приведена информация о тегах, используемых внутри цикла записи (the_title, the_content и т. д.).http://codex.wordpress.org/Template_Tags#Post_tags

Надеюсь, это поможет ...:)

0 голосов
/ 18 декабря 2010

Я сделал это некоторое время назад. В моем блоге у вас есть решение, я знаю его на польском, но код - это код :) http://blog.grabek -adam.pl / 2010/06 / wordpress-Popularne-Posty-плагин-до-obrazkw /

Здесь у вас есть только запрос:

$posty = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS wp_posts.id, wp_posts.post_title, wp_posts.comment_count, wp_posts.post_date
                        FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
                        INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
                        WHERE 1=1  AND wp_term_taxonomy.taxonomy = 'category'
                        AND wp_term_taxonomy.term_id IN ('cat_id1,cat_id2,cat_id5')
                        AND wp_posts.post_type = 'post'
                        AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
                        AND wp_posts.comment_count > 0
                        GROUP BY wp_posts.ID ORDER BY wp_posts.comment_count DESC
                        LIMIT 5
                        ");

Этот код будет включать только те категории, которые Вы указали здесь AND wp_term_taxonomy.term_id IN ("cat_id1,cat_id2,cat_id5"), но я думаю, что его будет легко изменить в соответствии с Вашими требованиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...