这已被问过,但我已经尝试了很多东西以使其工作,并且我不知道我错过了什么。我有一个使用Ajax调用和显示成员配置文件的Wordpress网站的成员目录。它还允许您按名称按字母顺序排序。登录时都可以完美工作,但退出时返回'0'。我已经使用不同权限的多个帐户对其进行了测试,只要有人使用任何帐户登录,就可以正常工作。当用户未登录时,Wordpress AJAX返回0
我都
add_action('wp_ajax_nopriv_load-filter', 'load_members');
和
add_action('wp_ajax_load-members', 'load_members');
补充说,这是我读过应该让它在这两个记录,并在用户未登录工作。我假设没有登录的用户无法访问Ajax工作必不可少的东西,可能是我一直在阅读的ajax-admin.php文件,但是我尝试过的任何修补程序都无能为力。
我试着在chrome中调试(F12,检查网络错误等),发现没有有用的信息。我还将console.log()行添加到代码的各个部分,以确定它是否被调用,并且它们都按预期调用,登录或退出。
无论如何,这里是从的functions.php(不包括ADD_ACTION部分)我的代码:
function load_members()
{
$letter = $_POST[ 'letter' ];
if($letter == "all") {
$args = array(
'role' => 'Subscriber',);
$user_query = new WP_User_Query($args);
ob_start();
global $user;
if (!empty($user_query->results)) {
foreach ($user_query->results as $user) {
get_template_part('template', 'directory');
}
} else {
echo '<div class="center" >No users found.</div>';}
$response = ob_get_contents();
ob_end_clean();
echo $response;
die(1);
在这里,从我的目录页面的功能:
function members_get(catID) {
jQuery("a.ajax").removeClass("current");
jQuery("#category-post-content").fadeOut();
$('.' + catID).addClass("current"); //adds class current to the menu item being displayed so you can style it with css
jQuery("#loading-animation").show();
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); //must echo it?>';
console.log(ajaxurl);
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {"action": "load-members", letter: catID },
success: function(response) {
jQuery("#category-post-content").fadeIn();
jQuery("#category-post-content").html(response);
jQuery("#loading-animation").hide();
return false;
}
道歉的格式functions.php部分;它粘贴奇怪,我试图修复它。有谁知道发生了什么事?
谢谢,这是问题。花了很长时间来解决这样一个小问题! –