Intereting Posts
Как получить текущий пользовательский тип сообщения Выбранный таксономический термин (не все условия) Использовать параметры администратора из родительской темы в дочерней теме Как получить определенное изображение для всех, кто комментирует? Добавление переменной сеанса и / или cookie на основе выбранного пользователем ввода Запрос пользовательского типа почтового типа по дате работает только тогда, когда два сообщения соответствуют запросу Изменить сообщение об ошибке «файл не поддерживается» Как изменить логотип на сайте WordPress, который является частью 7-го сайта? Автоматическое добавление категорий и авторов в пользовательское меню? Пагинация для div's Ошибка при создании проблемы подключения к базе данных в xampp saver Использование файла .pdf в виде страницы в wordpress Можно ли добавить add-filter () – hook в функцию? Как переименовать имя файла вложения изображения, используя php Как удалить все стили для определенного шаблона страницы? Изменение дизайна уведомлений WooCommerce

Важная статья со страницы 2 и на

Сегодня я обновил старое сообщение в блоге и установил его, чтобы показывать информацию о последних изменениях. Это типичная запись с обновлениями сайта как название для журнала, который вы могли бы сказать, с прошлыми изменениями, указанными по дате.

То, что я обнаружил, было, если сообщение возникло со страницы два или дальше, липкий пост все еще появляется на второй странице или на какой бы странице он не появился, однако, если сообщение возникло на первой странице, сообщение исчезает из видимых сообщений в блоге.

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

Если у вас есть объяснение, почему это происходит, я очень хочу это услышать.

Изменение количества сообщений на странице показывает мне, связано ли это с тем, является ли сообщение на первой странице или нет, и если оно есть, и оно липкое, оно исчезает и отображается только как липкое, если оно липкое и со страницы два или на нем остается видимым на этой странице, а также липкой на первой странице.

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

Заинтересованы в некотором вкладе, и если что-то можно сделать, чтобы убедиться, что липкий пост отображается только как липкий пост, а не в другом месте в блоге на другой странице в то же время.

Solutions Collecting From Web of "Важная статья со страницы 2 и на"

Важные сообщения – это боль в прикладе, и неправильно импонирует ИМХО. Исходный код ясно показывает, что липкие сообщения перемещаются только вверху страницы на главной странице ( или любой пользовательский экземпляр WP_Query который эмулирует главную страницу ), липкие сообщения не удаляются с постраничных страниц. Это, ИМО, должно быть частью ядра, липки должны быть перемещены в начало первой страницы и после этого должны быть полностью удалены из запроса.

Как и в отношении SEO, я не уверен, каково влияние этого. SEO – это очень продвинутое поле, которое ускользает от меня ( и, вероятно, многие из нас в этом стеке ). Это может быть и неправильный стек, чтобы задать такой вопрос, я думаю, что стежок веб-мастеров будет лучшим местом, чтобы задать такие вопросы, связанные с SEO.

В любом случае, чтобы вернуться к теме стикеров, я всегда делаю следующее ( пожалуйста, следуйте связанным исходным кодом для лучшего понимания ):

  • Установите ignore_sticky_posts на true на домашней странице через pre_get_posts . Это игнорирует функцию липких сообщений.

  • Все еще внутри pre_get_posts , получите массив липких сообщений и полностью удалите их из запроса. Таким образом, у кого-то нет головной боли при необходимости вручную пересчитывать разбиение на страницы из-за использования смещений и т. Д.

  • Внесите липкие сообщения через фильтр the_posts в цикл основного запроса.

Что приятно делать это так,

  • липкие сообщения больше не входят в основной запрос

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

Давайте посмотрим на код: ( ПРИМЕЧАНИЕ . Код непроверен, а для него требуется PHP 5.4+)

 add_action( 'pre_get_posts', function ( $q ) { if ( $q->is_home() // Only target the homepage && $q->is_main_query() // Only target the main query ) { // Remove sticky posts $q->set( 'ignore_sticky_posts', 1 ); // Get the sticky posts array $stickies = get_option( 'sticky_posts' ); // Make sure we have stickies before continuing, else, bail if ( !$stickies ) return; // Great, we have stickies, lets continue // Lets remove the stickies from the main query $q->set( 'post__not_in', $stickies ); // Lets add the stickies to page one via the_posts filter if ( $q->is_paged() ) return; add_filter( 'the_posts', function ( $posts, $q ) use ( $stickies ) { // Make sure we only target the main query if ( !$q->is_main_query() ) return $posts; // Get the sticky posts $args = [ 'posts_per_page' => count( $stickies ), 'post__in' => $stickies ]; $sticky_posts = get_posts( $args ); // Lets add the sticky posts in front of our normal posts $posts = array_merge( $sticky_posts, $posts ); return $posts; }, 10, 2 ); } });