我对我的CustomPostType的ajax加载更多有问题。我想我弄错了,但不知道在哪里。如果可以编辑我的代码,我会很高兴的。
UPDATE
我创建了div
cool
要粘贴它,请加载更多帖子。单击“加载更多”后,div cool中有0。这是什么意思?
In functions.php
add_shortcode( \'list-posts-basic\', \'rmcc_post_listing_shortcode1\' );
function rmcc_post_listing_shortcode1( $atts ) {
ob_start();
$query = new WP_Query( array(
\'post_type\' => \'imggal\',
\'order\' => \'ASC\',
\'orderby\' => \'title\',
\'posts_per_page\' => 1,
) );
if ( $query->have_posts() ) { ?>
<ul id="ajaxx" class="clothes-listing">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<li id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile;
wp_reset_postdata(); ?>
<div id="cool"></div>
<a id="more_posts" href="#">Load More</a>
</ul>
<?php $myvariable = ob_get_clean();
return $myvariable;
}
}
add_action(\'wp_ajax_nopriv_rmcc_post_listing_shortcode1\', \'rmcc_post_listing_shortcode1\');
add_action(\'wp_ajax_rmcc_post_listing_shortcode1\', \'rmcc_post_listing_shortcode1\');
AJAX
(function($) {
$(document).ready(function($) {
$("#more_posts").on("click",function(e){ // When btn is pressed.
e.preventDefault();
$.ajax({
url: ajax_object.ajax_url,
data: {
\'action\' : \'rmcc_post_listing_shortcode1\'
},
success: function (data) {
if (data.length > 0) {
$(\'#cool\').html(data);
}
},
});
});
});
})(jQuery);
请帮帮我!
SO网友:Cai
第一个问题是AJAX函数functions.php
应该echo
其结果,而不是return
. 您还需要致电wp_die()
在最后。
我不完全确定你想做什么,但看起来你的一半循环可能不应该在那里。当前您正在输出整个#ajaxx
每次单击时在其内部列出#load-more
. 这至少会给您带来重复ID的问题。
我怀疑你想要的是:
whatever-page-template.php
// Rest of page template and beginning of loop
<ul id="ajaxx" class="clothes-listing">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<li id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile;
wp_reset_postdata(); ?>
<div id="cool"></div>
<a id="more_posts" href="#">Load More</a>
</ul>
// etc...
functions.php
function rmcc_post_listing_shortcode1( $atts )
{
ob_start();
$query = new WP_Query( array(
\'post_type\' => \'imggal\',
\'order\' => \'ASC\',
\'orderby\' => \'title\',
\'posts_per_page\' => 1,
));
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
<li id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; endif;
wp_reset_postdata();
$myvariable = ob_get_clean();
echo $myvariable;
wp_die();
}
您也总是加载相同的帖子,因此需要实现某种分页,但我会先修复基本的AJAX调用!
您可以在Wordpress中阅读有关AJAX的更多信息(包括调试!)在这里: