WordPress中的AJAX调用不适用于订阅者用户

时间:2012-03-09 作者:Ajay Patel

全部的

在我的应用程序中有一个通知系统,当用户单击该图标时,我想进行ajax调用。问题id它对管理员用户(调试:200 ok)正常工作,但对订阅用户(调试:301永久移动)无效。

Ajax调用

$("#notifications-button").click(function() {


    $.ajax({
    type : \'POST\',

    url: \'<?php echo get_option(\'siteurl\') . \'/wp-admin/admin-ajax.php\' ?>\',
    data:\'action=my_special_ajax_call&value=1\',
    success : function(data){
        $(\'.message-count\').hide();
    },

    });
});
功能

 function implement_ajax() {

if(isset($_POST[\'value\']))
  {

    global $wpdb, $user_ID;

    $wpdb->query( $wpdb->prepare("UPDATE wp_frm_items SET alerts_flag = 0 WHERE user_id = \'". (int)$user_ID ."\'" ));
}
}
add_action(\'wp_ajax_my_special_ajax_call\', \'implement_ajax\');
add_action(\'wp_ajax_nopriv_my_special_ajax_call\', \'implement_ajax\');//for users that are not logged in.
我无法理解为什么这对订阅者不起作用?代码有什么错误吗?

提前感谢!

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

问题是与插件角色作用域程序冲突。停用插件可以解决此问题。作为角色作用域的替代方案(我不提供这一建议,只是一个建议),这里有一个插件Members.

SO网友:Ajay Patel

通过手动调用ajax进行测试来解决。php页面

<?php 

ini_set(\'html_errors\', 0);
define(\'SHORTINIT\', true);

require \'../../../wp-load.php\';
require( ABSPATH . WPINC . \'/formatting.php\' );
require( ABSPATH . WPINC . \'/meta.php\' );
require( ABSPATH . WPINC . \'/post.php\' );
wp_plugin_directory_constants();

// stuff goes here

if(isset($_POST[\'value\']))
  { 

    $uid=$_POST[\'value\'];
    global $wpdb;
    $wpdb->query( $wpdb->prepare("UPDATE wp_frm_items SET alerts_flag = 0 WHERE user_id = $uid" ));
}
?>

结束

相关推荐

无法通过AJAX获取WordPress中帖子的内容

我正在尝试调整我的Wordpress主题,我使用了这个方法described here 我现在正在尝试通过函数获取post的内容。php。使用jQuery,当我发出警报(数据)时,我得到的是“标题”回音,但不是我想要的现有帖子的内容(返回0)。jQuery部分$(\'.ajaxed,.ajaxed a,.menu-item-home a,.menu-item-object-page a\').live(\'click\', function(event) { event.preve