以管理员AJAX调用方式登录时,Wordpress返回0

时间:2016-06-16 14:34:18

标签: ajax wordpress function

使用WordPress 作为管理员&使用AJAX调用WordPress函数我得到" 0" 。但是当以管理员身份退出时,一切都正常工作

也许有人像我一样遇到类似的问题而且知道可能的解决方法吗?

我希望以管理员身份登录并注销,将返回输出(当然不是0)。

这是 functions.php 文件中的功能。

add_action('wp_ajax_nopriv_get_category_data', 'getCategoryData');
add_action('wp_ajax_load_get_category_data', 'getCategoryData');

function getCategoryData()
{
    $data = [
    'category' => htmlspecialchars($_POST['category'])
];

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args= array(
    'post_type' => 'Coupons',
    'posts_per_page' => 8,
    'post_status' => 'publish',
    'paged' => $paged,
    'rewrite' => array( 'slug' => 'CustomCat' ),
    'caller_get_posts'=> 1
);

$couponBlock = new WP_Query( $args );

if ($data['category']) {
    $the_query = new WP_Query(array ('cat' => $data['category'], 'posts_per_page' => 8) );
    if ($the_query->have_posts()):
        while ($the_query->have_posts()): $the_query->the_post();
            get_template_part('template/ajaxCustomCat', 'page');
        endwhile;
        wp_die();
    endif;

} else {
    return 'no data';
} 
}

1 个答案:

答案 0 :(得分:2)

您还必须将ajax函数注册为admin或特权ajax调用。所以你的电话应该是这样的:

add_action( 'wp_ajax_add_foobar', 'prefix_ajax_add_foobar' );
add_action( 'wp_ajax_nopriv_add_foobar', 'prefix_ajax_add_foobar' ); 

https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)

请记住,您还通过 ajax 返回数据,因此AJAX读取的回报实际上是echo。因此,需要发送回前端的数据应为echoed。如果要删除wordpress随其输出一起发送的0,请在函数末尾添加exit()以表示已完成的呼叫。