AJAX不适用于已注销的用户

时间:2017-01-16 作者:Rick Groen

我正在尝试使用ajax加载更多内容。当我注销时,脚本不会返回任何内容。

这是我的php代码

<?php

function get_blog_items()
{ 
    $offset = (int)intval($_POST[\'offset\']);

    $args = array(
        \'posts_per_page\' => 4,
        \'post_type\' => \'post\',
        \'offset\' => $offset
     );

    $the_query = new WP_Query( $args );

    if ( $the_query->have_posts() ) :
        while ( $the_query->have_posts() ) : $the_query->the_post();

            get_template_part( \'template-parts/list\', \'blog\' );

        endwhile;

    endif;
    wp_reset_postdata();

}


function add_ajax_actions() {
    add_action( \'wp_ajax_nopriv_get_blog_items\', \'get_blog_items\' );
}

add_action( \'admin_init\', \'add_ajax_actions\' );
和我的javascript

$(document).ready(function($) {

    var loadbuttonBlogItems = $(\'#loadmore-blog-items\');
    loadbuttonBlogItems.on(\'click\', function() {
        $(this).addClass(\'loading\');

        $.ajax({
            url: ajax_object.ajaxurl,
            type: \'POST\',
            dataType: \'html\',
            data: {
                action: \'get_blog_items\',
                offset: $(\'body > div.page-wrap > section.blog-listing > ul\').children().length
            },
        })
        .done(function(data) {
            console.log(data);

            $(\'.blog-listing ul\').append($.parseHTML(data))

        })
        .fail(function() {
            console.log("error occured while loading more blog items");
        })
        .always(function() {
            console.log("ajax call finished");
            $(loadbuttonBlogItems).removeClass(\'loading\');
        });
    })
});

2 个回复
SO网友:Tom J Nowell

function add_ajax_actions() {
    add_action( \'wp_ajax_nopriv_get_blog_items\', \'get_blog_items\' );
}

add_action( \'admin_init\', \'add_ajax_actions\' );
admin_init 仅在初始化管理区域时运行。注销的用户无法访问wp admin,因此add_action( \'wp_ajax_nopriv_get_blog_items\', \'get_blog_items\' ); 从不跑步。将add\\u操作调用移出该函数并删除add_ajax_actions 功能和它应该工作。

您是否考虑过改用RESTAPI?

SO网友:RS Dev

将此添加到登录和注销中,那么Ajax将适用于这两种情况。

if ( is_user_logged_in() ) {
add_action( \'wp_ajax_\' . $_REQUEST[\'action\'] );
} else {
add_action( \'wp_ajax_nopriv_\' . $_REQUEST[\'action\'] );
}

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct