我在这里到处都可以浏览,还有广泛的Google搜索,但没有找到任何特定于此问题的东西。我正在尝试创建一个典型的"加载更多"按钮功能,该功能在自定义邮政类型分类档案页面上有效。这是我到目前为止所拥有的:
// Load more posts
add_action('wp_ajax_load_posts_by_ajax', 'load_posts_by_ajax_callback');
add_action('wp_ajax_nopriv_load_posts_by_ajax', 'load_posts_by_ajax_callback');
function load_posts_by_ajax_callback() {
$the_issue_key = $_POST['the_issue_key'];
check_ajax_referer('load_more_posts', 'security');
$paged = $_POST['page'];
$queried_object = get_queried_object();
$args = array(
'post_type' => 'case_study',
'post_status' => 'publish',
'posts_per_archive_page' => '2',
'paged' => $paged,
);
$my_posts = new WP_Query( $args );
if ( $my_posts->have_posts() ) :
?>
<?php while ( $my_posts->have_posts() ) : $my_posts->the_post() ?>
<h2><?php the_title() ?></h2>
<p><?php echo $queried_object; ?></p>
<?php the_excerpt() ?>
<?php endwhile ?>
<?php
endif;
wp_die();
}
脚本:
// Script
var ajaxurl = 'http://ovo2/wp-admin/admin-ajax.php';
var page = 2;
jQuery(function($) {
$('body').on('click', '.loadmore', function() {
var data = {
'action': 'load_posts_by_ajax',
'page': page,
'security': '<?php echo wp_create_nonce("load_more_posts"); ?>'
};
$.post(ajaxurl, data, function(response) {
$('.my-posts').append(response);
page++;
});
});
});
这可以正常工作,但是当我真正需要的是特定于分类法的帖子时,它会加载所有case_study cpt帖子。在我的存档页面本身中,我添加到了页面上显示的前两个帖子的$ args数组:
'tax_query' => array (
array (
'taxonomy' => $queried_object->taxonomy,
'field' => 'id',
'terms' => $queried_object->term_id,
),
),
它会拉出特定于分类法的帖子,但是当我将其添加到函数文件中的功能中以加载更多帖子,它就不起作用。似乎很明显,这与无法将变量从get_queried_object
从PHP传递到脚本有关,但我不确定如何解决此问题。
我也尝试使用wp_localize_script
,但无法正确设置。
任何帮助将不胜感激!
作为解决我的问题并获得所需功能的最后努力,我决定搜索一个可能执行我需要的一切的知名插件,我实际上找到了一个:ajax load更多
使用过滤器插件,我能够在10分钟内设置我想做的事情近8个小时。尽管它的功能在范围上更具体,但我会在专业精神和支持方面将此插件放在那里。我在网站构建上使用的插件很少,但是我将将此插件添加到列表中。