Плагины не помогают,потому что случай специфичный. Нужно подгружать записи при клике(пользовательские) через аякс. При клике делаю запрос в базу данных .Может кто-нибудь пример привести?
Есть такой вариант,но я чего-то в нем не понимаю.Я хочу вывести готовый div ,но когда вставляю его в цикл ,то в консоли ошибка : "Uncaught TypeError: Cannot read property 'offset' of undefined";
ajax:
$('#load_more_posts').on('click', function(e){
console.log('hi');
e.preventDefault();
var $offset = $(this).data('offset');
console.log('var'+$offset);
$.ajax({
method: 'POST',
url: my_ajax_object.ajax_url,
type: 'POST',
data: {
offset: $offset,
action: 'load_more_posts'
},
success:function(response){
console.log(response);
$('#load_more_posts').data('offset', parseInt(response.data.offset));
}
});
});
php:
add_action( 'wp_ajax_load_more_posts', 'load_more_posts' );
add_action( 'wp_ajax_nopriv_load_more_posts', 'load_more_posts' );
function load_more_posts(){
global $post;
$rst=[];
$country_id=get_the_id();
$query = new WP_Query(array(
'post_type' => 'hotel',
'posts_per_page'=> 2,
'offset'=> $_POST['offset'],
'meta_query' => array(
array(
'key' => 'acf_hotel_country', // name of custom field
'value' => $country_id, // matches exactly "123", not just 123. This prevents a match for "1234"
'compare' => 'LIKE'
)
)
));
if($query->have_posts()):
while($query->have_posts()):$query->the_post();
$rst[] = $post;
endwhile;
wp_reset_postdata();
$offset = $_POST['offset']+2;
endif;
wp_send_json_success(array('post'=>$rst, 'offset'=>$offset));
}
так он работает ,но когда в цикле после или перед $rst[] = $post; что-то дописать,то "Uncaught TypeError: Cannot read property 'offset' of undefined"