Я пытаюсь внедрить это на свой сайт.
Я хочу, чтобы кнопка read more отображалась внизу пользовательского WP_Query, и при нажатии она загружается вследующий набор контента под ним.
Код из половины приведенного примера работает в том смысле, что он получает правильный счетчик сообщений и обновляет атрибуты данных кнопки «Читать далее», скрывая его при нажатии на полный счетчик, нопо клику, он не добавляет ни одного контента ... Дополнительные посты не отображаются в div, как они должны.
Нет ошибок в консоли JS или что-либо, что я вижу.
Вот код, добавленный в мой файл шаблона page-work.php:
<div id="smartmaps" class="smartmaps col xs-col-14 xs-offset-1 md-col-12 md-offset-2">
<?php
//Find out how many posts
$total_posts = wp_count_posts('smart_maps');
$total_posts = $total_posts->publish;
$number_shown = 0;
global $post;
$the_offset = trim( sanitize_text_field( wp_unslash( $_POST['pOffset'] ) ) );
$the_total = trim( sanitize_text_field( wp_unslash( $_POST['totalPosts'] ) ) );
$args = array( 'post_type' => 'smart_maps', 'posts_per_page' => 2, 'offset' => $the_offset );
$posts_shown = $the_offset;
$the_query = new WP_Query( $args ); ?>
<?php if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="single-smartmap col xs-col-8">
<div class="col xs-col-4">
<img src="/wp-content/uploads/2018/12/group-4@2x.png" class="circle">
</div>
<div class="col xs-col-10 xs-offset-1">
<h5 class="smart-map-title"><?php the_title();?></h5>
<div class="block-icons">
<span class="icon-heart"></span>
<span class="icon-plant"></span>
<span class="icon-cup"></span>
<span class="icon-book"></span>
</div>
</div>
</div>
<?php $posts_shown++; $number_shown++;
endwhile;
if ( $posts_shown >= $the_total ) { ?>
<div id="all-posts-shown"></div>
<?php } ?>
<?php if ( $number_shown < $total_posts ) { ?>
<div class="loadMore" data-offset="<?php echo $number_shown; ?>" data-total="<?php echo $total_posts; ?>">
Load More
</div>
<?php } endif; ?>
</div>
JS AJAX:
jQuery(function($) {
$('.loadMore').click(function() {
//get the offset
var postOffset = $(this).attr('data-offset');
var totalPosts = $(this).attr('data-total');
var thisObj = $(this);
//get Page Template and put on page
var ajax_url = '<?php echo admin_url('admin-ajax.php'); ?>';
$.ajax({
type: 'POST',
url: ajax_url,
data: {
action: 'get_loadmore',
pOffset: postOffset,
totalPosts: totalPosts,
},
dataType: "html",
success: function(data) {
$('#smartmaps').append(data);
$new_offset = parseInt ( thisObj.attr('data-offset') ) + 2;
thisObj.attr('data-offset', $new_offset) //set the new post offset.
if ( $('#all-posts-shown')[0] ) {
thisObj.slideUp(); //hide loadmore if all posts have been displayed.
}
},
error: function(MLHttpRequest, textStatus, errorThrown){
alert("error");
}
});
}); //end of click function
});
и код, добавленный в мои функции. Php
//Load More Button
add_action('wp_ajax_get_loadmore', 'get_loadmore');
add_action( 'wp_ajax_nopriv_get_loadmore', 'get_loadmore' );
function get_loadmore() {
include(get_template_directory().'/page-work.php');
wp_die();
}
СТОРОНА ПРИМЕЧАНИЕ: Не уверен, если это имеет значение ... На странице будет 3 отдельных WP_Query., все со своей собственной кнопкой «Подробнее», потянув в другой тип сообщения.