php - 加载更多按钮在 Wordpress 上不起作用
问题描述
我在建立网站时正在学习wordpress。现在我正在尝试将“加载更多”按钮放在帖子下方,当我单击它以加载下一部分帖子时。
我遵循了我找到的一个教程。我添加的function.php
是
function my_load_more_scripts() {
global $wp_query;
wp_register_script( 'my_loadmore', get_stylesheet_directory_uri() . '/myloadmore.js', array('jquery') );
wp_localize_script( 'my_loadmore', 'loadmore_params', array(
'ajaxurl' => site_url() . '/wp-admin/admin-ajax.php', // WordPress AJAX
'posts' => json_encode( $wp_query->query_vars ), // everything about your loop is here
'current_page' => get_query_var( 'paged' ) ? get_query_var('paged') : 1,
'max_page' => $wp_query->max_num_pages
) );
wp_enqueue_script( 'my_loadmore' );
}
add_action( 'wp_enqueue_scripts', 'my_load_more_scripts' );
function loadmore_ajax_handler(){
$args = json_decode( stripslashes( $_POST['query'] ), true );
$args['paged'] = $_POST['page'] + 1; // we need next page to be loaded
$args['post_status'] = 'publish';
query_posts( $args );
if( have_posts() ) :
// run the loop
while( have_posts() ): the_post();
the_title();
endwhile;
endif;
die;
}
add_action('wp_ajax_loadmore', 'loadmore_ajax_handler'); // wp_ajax_{action}
add_action('wp_ajax_nopriv_loadmore', 'loadmore_ajax_handler'); // wp_ajax_nopriv_{action}
这是javascript部分
jQuery(function($){
$('.loadmore').click(function(){
var button = $(this),
data = {
'action': 'loadmore',
'query': loadmore_params.posts,
'page' : loadmore_params.current_page
};
$.ajax({ // you can also use $.post here
url : loadmore_params.ajaxurl, // AJAX handler
data : data,
type : 'POST',
beforeSend : function ( xhr ) {
button.text('Loading...');
},
success : function( data ){
if( data ) {
button.text( 'More posts' ).prev().before(data); // insert new posts
loadmore_params.current_page++;
if ( loadmore_params.current_page == loadmore_params.max_page )
button.remove();
} else {
button.remove();
}
}
});
});
});
这是按钮
<?php
$the_query = new WP_Query(array(
'posts_per_page' => 1,
'category_name' => 'jobs', // this is the category SLUG
));
?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<?php the_title(); ?>
<?php endwhile; ?>
<span class="loadmore">More posts</span>
正如您在上面看到的,我在该类别中有 2 个帖子Jobs(slug = jobs)
我已将 posts_per_page 添加为 1 以测试按钮。
我在页面上看到一个帖子和下面的按钮,但是当我点击More posts
而不是加载另一个帖子时,它只会显示0
在页面上,在当前可见帖子的上方。
这是自定义页面模板,而不是 index.php。
这里可能是什么问题?
解决方案
推荐阅读
- database - refs 数据类型之间的 db2 比较
- python - python二叉树迭代器 - 为什么返回的节点变为无?
- asp.net-core-mvc - MVC Core - UseIIS 和 UseIISIntegration 有什么区别
- java - 如何通过邮递员测试spring boot多个文件上传及其详细信息?
- arduino - 将 UDP 从 Arduino Uno 发送到 InfluxDB
- arrays - 有没有办法将数组拆分为带条件的多维数组?
- optimization - Adam 优化器错误:梯度计算所需的变量之一已被就地操作修改
- python-3.x - 当我明确指出我只想完成第一个任务时,为什么所有任务都在 asyncio.wait() 中完成?
- powershell - 使用 PowerShell 将嵌套应用程序的所有输出写入特定日志文件
- c++ - 链接可变参数函数调用