Intereting Posts
Аутентификация для сайта wordpress Добавить действие в пользовательскую функцию изменить $ src из wp_register_script в плагинах / темах Изменить тему из плагина на основе query_vars Работа wp cron срабатывает каждую секунду или около того, если обратный вызов завернут DOING_CRON, он никогда не срабатывает вообще WooCommerce Variation Swatches and Photos – получить миниатюру атрибута В архиве категорий отображаются все сообщения, а не определенная категория Подключитесь к отдельной базе данных с помощью $ wpdb и выполните проверку подлинности пользователя Плагин менеджера изображений Дублирование полной версии WordPress для разработки, а затем перераспределения? Изменить ссылки на edit.php Заголовок изображения внутри ссылки <a> Где правильное место (а) в tw.sysixteen's header.php, чтобы добавить веб-сайт Google? Плагины не будут обновляться, когда WordPress сообщает, что они обновлены Показать только сообщения с изображениями и фиксированным количеством сообщений

Важная статья со страницы 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 ); } });