在functions.php中使用get_queried_object传递ajax加载更多帖子的数据



我在这里到处都可以浏览,还有广泛的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个小时。尽管它的功能在范围上更具体,但我会在专业精神和支持方面将此插件放在那里。我在网站构建上使用的插件很少,但是我将将此插件添加到列表中。