Я использую Infinite Scroll от JetPack на главной странице нашего сайта, и он работает нормально, но я также хочу отображать там определенные сообщения.
Если сообщение отображается за пределами бесконечного цикла, я хочу удалить его, чтобы не было дублирования.
У меня есть глобальный массив, настроенный с использованием bm_ignoreposts, и я добавил его в рендер с бесконечным циклом, но по какой-то причине он не работает. Вот код
functions.php
Бесконечный рендер.
add_filter( 'infinite_scroll_archive_supported', 'tweakjp_custom_is_support' );
function mm_infinite_scroll_render() {
global $post;
while ( have_posts() ) : the_post();
bm_ignorePost($post->ID);
get_template_part( 'content-inf' );
endwhile;
}
Запрос
function mm_infinite_scroll_query_args($args) {
$new_args = array(
'posts_per_page' => $args['posts_per_page'],
'paged' => $args['paged'],
'orderby' => 'date',
'order' => 'DESC',
'post_type' => array( 'post', 'features', 'it_hardware', 'videos' ),
'post_status' => 'publish',
);
return $new_args;
}
Для справки вот код игнорирования постов:
function bm_ignorePost ($id) {
if (!is_page()) {
global $bmIgnorePosts;
$bmIgnorePosts[] = $id;
}
}
Я решил больше не использовать JetPack и перейти к пользовательской версии Javascript, которая использует AJAX для загрузки новых сообщений, выполняющих новый запрос.
Говоря о поддержке Jetpack, они считают, что это невозможно в зависимости от того, как работает плагин.
Других решений пока нет …