
Добрый день, друзья!
В сегодняшней статье я отвечу на вопрос читателя моего блога (Игоря), заданный в комментарии к статье Как в WordPress изменить порядок рубрик без плагина.
Вопрос: “Как можно разместить статьи в категории не по дате публикации, а по алфавитному порядку?”
Итак, задача – выводить статьи (анонсы статей) в категориях в алфавитном порядке.
По этому поводу я нашел статью в кодексе WordPress. И в ней предлагается внести изменения в файл category.php (или archive.php – зависит от вашего шаблона).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php get_header(); ?> <div id="content"> <ul> <?php // we add this, to show all posts in our // Glossary sorted alphabetically if (is_category('Glossary')) { $args = array( 'posts_per_page' => -1, 'orderby'=> 'title', 'order' => 'ASC' ); $glossaryposts = get_posts( $args ); } foreach( $glossaryposts as $post ) : setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul> |
Чем мне не понравился этот вариант.
Открываю я файл category.php своего шаблона WordPress и нахожу там вот такой цикл:
1 2 3 4 5 6 |
while ( have_posts() ) { the_post(); get_template_part( 'loop', 'category' ); } |
Посмотрел в нескольких других темах – то же самое – такой же цикл while. Вообщем, на лицо существенные отличия в выводе списка записей. И если вы захотите использовать вариант, предлагаемый в кодексе WordPress, то придется поразбираться, чтобы не “поломать” вывод, который у вас есть на данный момент.
Лень – двигатель прогресса. Поэтому я нашел более простой вариант, который вам и предлагаю использовать.
Нужно всего лишь добавить следующий код в файл functions.php вашего шаблона WordPress:
1 2 3 4 5 6 7 8 9 |
function wpsf_orderby($query) { if ( is_category() ) { remove_action( 'pre_get_posts', __FUNCTION__ ); add_filter( 'posts_orderby', function() { return ' post_title ASC'; } ); } } add_action( 'pre_get_posts', 'wpsf_orderby' ); |
Вот и все! Теперь при заходе в любую из категорий список постов будет в алфавитном порядке. Если алфавитная сортировка нужна только для одной конкретной категории, то можно добавить название этой категории в качестве параметра функции is_category():
1 2 3 4 5 |
... if ( is_category('category_name') ) { ... |
И после таких изменений обратите внимание на то, как у вас называются ссылки на предыдущие и последующие записи. Их, возможно, придется переименовать. Когда сортировка статей была по дате публикации, то ссылка “Предыдущие записи” была уместна. Она вела на страницу с 5-10 анонсами статей, опубликованных ранее по дате.
Теперь у вас идут первые статьи, например, на букву “А”, и ссылка на следующие статьи с название “Предыдущие записи” уже не подходит по смыслу.
Надеюсь, все понятно. Задавайте ваши вопросы. У вас есть шанс получить развернутый ответ в виде статьи, подобной этой.
Успехов!
Спасибо, Алексей, сейчас попробую, наверняка как обычно накосячу ))
Тут “накосячить” надо еще постараться: скопировали, вставили, сохранили. =) Если что – пишите.
Кстати, Игорь, на блоге активен конкурс за первый комментарий к новой статье. Если желаете получить 15 WMR, то делайте репост этой статьи и присылайте номер R-кошелька.
Да не вопрос сделал ))
R885385499523
Отправил приз. Подписывайтесь на блог, следите за новыми статьями и получайте новые призы. =)
Спасибо!
Подписался ))
Все хорошо получилось )) Вопрос: а как не во всех и не в одной категории, а только в двух сделать?
Так и предполагал, спасибо.
P.S На досуге почитаю ваш сайт.
Еще вопрос немного не по теме ))
У вас в сайдбаре реклама адсенс, а разве можно размещать данную рекламу в липком сайдбаре?
Спасибо.
В правилах адсенс я не встречал запрета по этому поводу. Ну, может невнимательно читал. Пока никаких санкций нет. Да и не такой высокий у меня CTR, чтобы обращать на меня внимание.
Наблюдаю множество посещаемых сайтов, у которых явные нарушения по расположению блоков адсенс, рассчитанные на случайные клики. И они прекрасно себя чувствуют.
Все сайты-краны, раздающие различные криптовалюты, работают по такому принципу. Отдают за раз десятые (сотые, тысячные) доли цента, а за клик по рекламе получают минимум от 1 цента. И блоки располагаются так, что случайные клики происходят часто.
Я вот что то побаиваюсь так размещать, отдача хоть есть?
У меня посещаемость всего около 200 уников. Какая тут может быть отдача? =)
Здравствуйте.
Полезная штука, но не действует с цифрами. Не подскажете, может как то можно сделать?
Здравствуйте.
Подробней, пожалуйста, что вы имеете в виду под “не действует с цифрами”?
То есть статьи, название которых начинается с букв – расставляются по порядку, а статья, названия которых имеет вид “1.1 Название” “1.2 Название” – по порядку не выстраиваются.
Так никто не ответит, почему статьи название которых начинается с букв, выстраиваются в алфавитном порядке, а статьи, в названии которых первыми идут цифры – нет?
Здравствуйте, Алексей!
Я сменил шаблон и сейчас у меня на главной выводятся списком последние статьи, а как сделать, чтобы и на главной выводилось в алфавитном порядке?
Спасибо!
Весь интернет облазил, но решения не нашел.
Как выводить посты с сортировкой по произвольному полю?
Здравствуйте! А как включить обратный порядок ?
Благодарю за код. Вставил в тему, все отлично работает. Потратил достаточно длительное время, прежде чем нашел ваш сайт. Всё, что в Гугле на первых местах не решает проблемы, а на вашем сайте решение нашлось, так что желаю ему повыше быть в ТОП.