Есть веб-сайт WordPress. В этом проекте вывод сообщений и продуктов в блоге осуществляется с использованием ajax. Вот эта страница:
Страница блога - [1]: https://tirador.anvi.team/blog/
Страница продукта - [2]: https://tirador.anvi.team/products/
Если на странице блога нажмитекнопка «загрузить» новые статьи отображают все больше и больше, пока все записи не будут закончены.
Но на странице товара поведение другое. Если вы нажмете кнопку «Загрузить больше», новые продукты просто заменят те, которые были.
Я не разработал этот сайт и у меня недостаточно знаний о ajax для решения этой проблемы. Мне нужно, чтобы новые продукты появлялись на странице продукта так же, как и на странице блога.
Здесь приведены ссылки на код, который отвечает на вывод записей. Мне кажется.
Загрузить сообщения Ajax: https://codeshare.io/GArO9N
function more_post_ajax(){
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'tpl-blog.php'
));
foreach($pages as $page){
$page_id = $page->ID;
}
$offset = $ppp = get_field('all_blog_posts_count', $page_id);
$page = (isset($_POST['pageNumber'])) ? $_POST['pageNumber'] : 0;
header("Content-Type: text/html");
$args = array(
'suppress_filters' => true,
'post_type' => 'post',
'posts_per_page' => $ppp,
'paged' => $page,
);
$loop = new WP_Query($args);
$out = '';
if ($loop -> have_posts()) : while ($loop -> have_posts()) : $loop -> the_post();
$out .= get_template_part('loop/latest-post-item');
endwhile;
endif;
wp_reset_postdata();
die($out);
}
add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax');
add_action('wp_ajax_more_post_ajax', 'more_post_ajax');
Загрузить продукты Ajax: https://codeshare.io/5NBJrJ
function load_products() {
$page = (isset($_POST['pageNumber'])) ? $_POST['pageNumber'] : 0;
$producer_id = (isset($_POST['producer_id'])) ? $_POST['producer_id'] : 0;
$cats = ( isset( $_POST['categories'] ) ) ? $_POST['categories'] : false;
$colors = ( isset( $_POST['product_colors'] ) ) ? $_POST['product_colors'] : false;
$price_range = ( isset( $_POST['price_range'] ) ) ? $_POST['price_range'] : false;
header("Content-Type: text/html");
$args = array(
'suppress_filters' => true,
'post_type' => 'products',
'posts_per_page' => 6,
'paged' => $page,
);
$loop = new WP_Query($args);
$out = '';
if ($loop -> have_posts()) : while ($loop -> have_posts()) : $loop -> the_post();
$out .= get_template_part( 'loop/product', 'grid' );
endwhile;
endif;
wp_reset_postdata();
die($out);
}
add_action('wp_ajax_nopriv_load_products', 'load_products');
add_action('wp_ajax_load_products', 'load_products');
А это дыра Ajax. php файл: https://codeshare.io/21QXjB
Я не могу решить эту проблему, пожалуйста, помогите мне найти проблему.