Intereting Posts
Добавление класса в тег тела при включенном меню Удаляет ли delete_post_thumbnail () фактическое изображение? Как я могу объединить эту функцию (ы), которая вставляет термины в пользовательскую таксономию с помощью этого другого, который добавляет пользовательский фильтр таксономии? наследование класса плагина. не может изменять переменную Передача аргументов моей функции с do_action и add_action не работает Сбой с Walker_Nav_Menu и закрытие <ul> wp_enqueue и зависимости Как настроить поддомен для изображений на Debian Apache VPS? Поддерживаются ли функции WordPress $ wpdb, когда таблица заблокирована? Как отключить плагин для мобильного телефона? Возможно ли установить WordPress MU на поддомен? Одноуровневое меню? Другой путь? Предотвращение дублирования сообщения из динамических нескольких циклов Плагин для регистрации информационного бюллетеня (не отправка, просто сбор данных)? Структура файла WordPress

Дубликаты с циклом WP_Query

Я показываю только свои сообщения на главной странице с отличным изображением. Моя проблема заключается в том, что при каждой загрузке следующей страницы я получаю те же результаты, что и получение дубликатов. Я использую заказ по настраиваемому полю. Любые указания / идеи, которые могут привести к этой проблеме, приветствуются. Ниже мой основной цикл

// Layout if(is_category()) { $post_layout = blt_get_option('category_post_layout', 'normal'); } elseif(is_author()) { $post_layout = blt_get_option('author_post_layout', 'normal'); } elseif(is_archive()) { $post_layout = blt_get_option('archive_post_layout', 'normal'); } else { $post_layout = blt_get_option('home_post_layout', 'normal'); } $i = 1; if(have_posts()){ while(have_posts()){ the_post(); get_template_part( 'inc/template-parts/content', $post_layout ); // Ad spot #4 if($ad_spot_between_posts = blt_get_option('spot_between_posts', 'none') != 'none'){ $ad_posts_frequency = blt_get_option('spot_between_posts_frequency', 3); // take into account ad frequency if(($i % (int) $ad_posts_frequency) == 0){ blt_get_ad_spot( 'spot_between_posts' ); } } $i++; } }else{ $has_posts = false; } 

И это мой индекс:

  <?php get_header(); ?> <div id="site-content" class="clearfix"> <?php // Front Page - Top of container if(is_front_page() and is_active_sidebar('front-top_of_container')){ dynamic_sidebar('front-top_of_container'); } ?> <div id="site-content-column"><?php if(is_archive()){ blt_get_title(); } if(have_posts()){ echo '<div class="row">'; include(get_template_directory().'/loop.php'); echo '</div>'; // Previous/next page navigation. if(!blt_get_option('enable_infinite_scrolling')){ the_posts_pagination(array( 'prev_text' => '<i class="fa fa-chevron-left"></i>', 'next_text' => '<i class="fa fa-chevron-right"></i>', 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'blue' ) . ' </span>', )); } }else{ get_template_part( 'inc/template-parts/content', 'none' ); } ?> </div><?php # # SIDEBAR # ======================================================================================== # Load the sidebar if needed # ======================================================================================== # if(in_array(blt_get_option('sidebar_layout', 'right'), array('left', 'right'), true)){ get_sidebar(); } ?> </div> <?php get_footer(); ?> в  <?php get_header(); ?> <div id="site-content" class="clearfix"> <?php // Front Page - Top of container if(is_front_page() and is_active_sidebar('front-top_of_container')){ dynamic_sidebar('front-top_of_container'); } ?> <div id="site-content-column"><?php if(is_archive()){ blt_get_title(); } if(have_posts()){ echo '<div class="row">'; include(get_template_directory().'/loop.php'); echo '</div>'; // Previous/next page navigation. if(!blt_get_option('enable_infinite_scrolling')){ the_posts_pagination(array( 'prev_text' => '<i class="fa fa-chevron-left"></i>', 'next_text' => '<i class="fa fa-chevron-right"></i>', 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'blue' ) . ' </span>', )); } }else{ get_template_part( 'inc/template-parts/content', 'none' ); } ?> </div><?php # # SIDEBAR # ======================================================================================== # Load the sidebar if needed # ======================================================================================== # if(in_array(blt_get_option('sidebar_layout', 'right'), array('left', 'right'), true)){ get_sidebar(); } ?> </div> <?php get_footer(); ?> 

Изменить: Бесконечная функция прокрутки

 function blt_infinitepaginate(){ $has_posts = true; $type = isset($_POST['type']) ? $_POST['type'] : false; $loopFile = $_POST['loop_file']; $paged = $_POST['page_no']; $posts_per_page = get_option('posts_per_page'); $post_id = isset($_POST['post_id']) ? $_POST['post_id'] : false; # Load the posts if($post_id){ include(get_template_directory().'/loop-hottest.php'); }else{ query_posts( array( 'paged' => $paged+1, 'post_status' => 'publish', 'post__not_in' => get_option('sticky_posts') ) ); include(get_template_directory().'/loop.php'); } if(!$has_posts){ return false; } exit; } function blt_change_main_loop( $query ) { if ( is_admin() || ! $query->is_main_query() ) return; if ( is_home() and isset($_GET['page'])) { $query->set( 'posts_per_page', $_GET['page'] * get_option('posts_per_page') ); return; } } add_action( 'pre_get_posts', 'blt_change_main_loop', 1 ); } в function blt_infinitepaginate(){ $has_posts = true; $type = isset($_POST['type']) ? $_POST['type'] : false; $loopFile = $_POST['loop_file']; $paged = $_POST['page_no']; $posts_per_page = get_option('posts_per_page'); $post_id = isset($_POST['post_id']) ? $_POST['post_id'] : false; # Load the posts if($post_id){ include(get_template_directory().'/loop-hottest.php'); }else{ query_posts( array( 'paged' => $paged+1, 'post_status' => 'publish', 'post__not_in' => get_option('sticky_posts') ) ); include(get_template_directory().'/loop.php'); } if(!$has_posts){ return false; } exit; } function blt_change_main_loop( $query ) { if ( is_admin() || ! $query->is_main_query() ) return; if ( is_home() and isset($_GET['page'])) { $query->set( 'posts_per_page', $_GET['page'] * get_option('posts_per_page') ); return; } } add_action( 'pre_get_posts', 'blt_change_main_loop', 1 ); } в function blt_infinitepaginate(){ $has_posts = true; $type = isset($_POST['type']) ? $_POST['type'] : false; $loopFile = $_POST['loop_file']; $paged = $_POST['page_no']; $posts_per_page = get_option('posts_per_page'); $post_id = isset($_POST['post_id']) ? $_POST['post_id'] : false; # Load the posts if($post_id){ include(get_template_directory().'/loop-hottest.php'); }else{ query_posts( array( 'paged' => $paged+1, 'post_status' => 'publish', 'post__not_in' => get_option('sticky_posts') ) ); include(get_template_directory().'/loop.php'); } if(!$has_posts){ return false; } exit; } function blt_change_main_loop( $query ) { if ( is_admin() || ! $query->is_main_query() ) return; if ( is_home() and isset($_GET['page'])) { $query->set( 'posts_per_page', $_GET['page'] * get_option('posts_per_page') ); return; } } add_action( 'pre_get_posts', 'blt_change_main_loop', 1 ); } 

Solutions Collecting From Web of "Дубликаты с циклом WP_Query"

Трудно правильно ответить на ваш вопрос с количеством контекста в вашем вопросе, но я попытаюсь использовать контекст из вашего предыдущего вопроса

Имея немного больше контекста здесь, в шаблоне, и если бы я правильно прочитал это, это на вашем index.php, я все же верю и поддерживаю свою точку зрения, что pre_get_posts – ваш ответ. Решите эту проблему следующим образом (только если это не статическая передняя страница, потому что следующее не будет работать)

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

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

Добавьте в свои функции functions.php следующее: ( Требуется хотя бы PHP 5.3 )

 add_action( 'pre_get_posts', function ( $q ) { if ( $q->is_home() // Target the home page only && $q->is_main_query() // Target only the main query ) { $meta_query = array( array( 'key' => '_thumbnail_id' ) ); $q->set( 'meta_query', $meta_query ); } }); 

Если это не решит вашу проблему, вам действительно нужно опубликовать больше контекста.

РЕДАКТИРОВАТЬ

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

В любом случае, чтобы быстро решить проблему с бесконечной прокруткой, вам нужно добавить следующие аргументы query_posts

 'meta_query' => array( array( 'key' => '_thumbnail_id' ) ), 

Просто заметьте, я предпочел бы переписать полную бесконечную функцию прокрутки с WP_Query как описано в предыдущем вопросе