Объясните, пожалуйста, как сделать сортировку постов для определенной категории по дате по возрастанию. То есть нужно добиться, чтобы пост опубликованный последним выводился последним, а не первым. Повторюсь, что это нужно сделать только для одной категории. Сейчас используется стандартный цикл вывода постов.
<?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(). Когда событие срабатывает, хук вызывает нашу функцию сортировки.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Ребята помогите, пожалуйстаЯ совсем не понимаю как мне это сделать
Всем привет, еще только изучаю язык, строго не судите такой вопрос: все номера телефонов в тексте записанные в формате +375XXYYYYYYY с помощью regex заменить...
при создании активити происходит выбор какой фрагмент отобразить на основе Extras в intent, и при выборе не первого фрагмента, а второго или третьего...