Объясните, пожалуйста, как сделать сортировку постов для определенной категории по дате по возрастанию. То есть нужно добиться, чтобы пост опубликованный последним выводился последним, а не первым. Повторюсь, что это нужно сделать только для одной категории. Сейчас используется стандартный цикл вывода постов.
<?php if( have_posts() ){ while( have_posts() ){ the_post(); ?>
<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
</div>
<?php } /* конец while */ ?>
<div class="navigation">
<div class="next-posts"><?php next_posts_link(); ?></div>
<div class="prev-posts"><?php previous_posts_link(); ?></div>
</div>
<?php
} // конец if
else
echo "<h2>Записей нет.</h2>";
То есть сейчас пост опубликованный последним, отображается первым. Заранее спасибо за помощь.
Для этого вам понадобится внести дополнительные параметры в основную выборку постов для данной категории. Это делается с помощью хуков.
В данном случае примерно так:
// Регистрируем хук и передаем название функции,
// которая будет вносить изменения в выборку
add_action( 'pre_get_posts', 'sort_my_category_by_date' );
// Пишем саму функцию, которая внедрит нужную сортировку
function sort_my_category_by_date( $query ) {
// Убеждаемся, что изменения не касаются админки
// и что мы применяем сортировку именно к основной выборке постов
// (а не к виджетам, например)
if ( ! is_admin() && $query->is_main_query() ) {
// Изменяем сортировку только в пределах страницы определенной категории
if ( is_category( $category_id ) ) {
// Сортировать по полю "Дата"
$query->set( 'orderby', 'date' );
// Сортировать по возрастанию
$query->set( 'order', 'ASC' );
}
}
}
Это примерный код (без тестирования). Его можно поместить в functions.php
или прямо в тело шаблона вашей категории, лучше где-нибудь в начале файла, до get_header(). Не забудьте заменить $category_id
на ID (или ярлык) нужной вам категории.
pre_get_posts
— здесь.is_category()
здесь.Инфа для понимания сути, кратко:
Хуки — это точки «перехвата», которые заранее предусмотрены разработчиками. Они позволяют «задним числом» изменять поведение функций и значения переменных в тех частях кода, которые подключаются раньше вашего.
Полный список хуков WordPress / СlassicPress есть в документации и тут, например. В вашем случае подходит хук pre_get_posts
(дословно «перед выборкой постов»), который и предназначен для изменения параметров выборки.
В WordPress/СlassicPress есть два типа хуков. Один для обработки «событий», другой для для переопределения переменных. Первые подключаются функцией add_action()
, вторые — функцией add_filter()
. В данном случае мы внедряемся в событие pre_get_posts
, поэтому используем add_action(). Когда событие срабатывает, хук вызывает нашу функцию сортировки.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Ребята помогите, пожалуйстаЯ совсем не понимаю как мне это сделать
Всем привет, еще только изучаю язык, строго не судите такой вопрос: все номера телефонов в тексте записанные в формате +375XXYYYYYYY с помощью regex заменить...
при создании активити происходит выбор какой фрагмент отобразить на основе Extras в intent, и при выборе не первого фрагмента, а второго или третьего...