как сортировать сообщения по самым последним и самым комментируемым фильтрам? - PullRequest
0 голосов
/ 08 сентября 2011

как сортировать сообщения по самым последним и самым комментируемым фильтрам?

например http://goo.gl/K9sXz

еще пример: http://goo.gl/SjYjs

Я нашел много на этом, но не смог

пожалуйста, помогите мне :)

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Я вижу, что вы после этого. Прочитав немного, я понял лучший (лучший?) Способ сделать это. Это совершенно другой подход к моему первому ответу, поэтому я публикую его как второй.

Я написал подробное руководство здесь . Короче говоря, вы определяете ссылки, которые указывают на страницу, которой вы являетесь, но с помощью переменных GET, которые сообщают WordPress о необходимости сортировки сообщений определенным образом. По умолчанию WordPress сортирует по дате, но добавляет

?&orderby=comment_count&order=desc

к URL, он будет упорядочен по-другому (в данном случае по количеству комментариев). Для представлений постов это немного отличается, поскольку это настраиваемое поле (и вам все равно понадобится плагин wp-post views).

Надеюсь, это поможет!

1 голос
/ 08 сентября 2011

Я ответил на аналогичный вопрос здесь , но я суммирую то, что я думаю, поможет вам.Он будет включать пользовательские запросы, которые вы узнаете больше о здесь .

. Вы можете использовать отдельные элементы 'div' для сортировки каждого из постов различными методами.Затем вы можете использовать jQuery, чтобы скрыть их все (кроме, скажем, «самой последней» панели).Затем вы можете использовать ссылки для отображения соответствующего элемента div, когда пользователь щелкает по нему (скрывая все остальные), используя обработчик событий jQuerys .click ().

Чтобы заполнить каждый элемент 'div' сообщениями, отсортированными различным способом, вы должны использовать пользовательский запрос.Например, чтобы отсортировать по количеству комментариев, определите эту функцию в файле 'functions.php'.

    function get_most_commented($limit=10) {
    global $wpdb;

   $most_commented = $wpdb->get_results("SELECT comment_count, ID, post_title FROM $wpdb->posts WHERE post_type='post' AND post_status = 'publish' ORDER BY comment_count DESC LIMIT 0 , $limit");

   foreach ($most_commented as $post) {
        setup_postdata($post);
        $id = $post->ID;
        $post_title = $post->post_title;
        $count = $post->comment_count;
        $output .= '<li><h1><a href="'. get_permalink($id).'">'.$post_title.' - '.$count.' comments</a></h1> post_excerpt;</li>';
    }
    return $output;
}

, затем вы внутри соответствующего элемента 'div' сверху вызываете функцию:

<?php echo get_most_commented(15) ?>

внутри упорядоченного / неупорядоченного списка (для отображения 15 наиболее комментируемых сообщений).В этом примере выводятся только заголовок и выдержка, но вы можете изменить HTML и использовать некоторые стили CSS, чтобы получить то, что вы хотите.

Надеюсь, это поможет!Вы вдохновили меня написать учебник по этому вопросу сейчас!

Редактировать: Я только что посмотрел на приведенный вами пример Nettuts - они «сортируют» посты, используяphp метод "GET".При нажатии на ссылку вы отправляетесь на ту же страницу, но с разными переменными get (например: недавний = истинный, прокомментированный = истинный)Страница содержит ряд операторов php if, определяющих порядок сортировки сообщений в зависимости от того, для какой переменной GET установлено значение 'true'.

Это имеет преимущество перед не требующим jQuery (или действительно включенным javascript)- и он не загружает все три метода сортировки одновременно - только тот, который ему нужен.

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