我无法在未登录时使WordPress ajax工作。我的get_posts查询在登录时返回正确的帖子。当用户点击作者时,从前端调用Ajax。作者ID通过Ajax函数作为参数传入。
我已经设置了admin_url
并定位了从
function ajax_scripts()
{
wp_localize_script( 'meet_the_team_js', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'imgurl' => plugins_url( 'img' , __FILE__ )) );
}
add_action( 'wp_enqueue_scripts', 'ajax_scripts' );
然后我在wordpress文档中找到的if wp_ajax
语句中添加了wp_ajax_nopriv
(登录用户)和is_admin()
(匿名用户)操作。
if ( is_admin() ) {
add_action( 'wp_ajax_nopriv_employee_recent_posts_ajax', 'employee_recent_posts_ajax' );
add_action( 'wp_ajax_employee_recent_posts_ajax', 'employee_recent_posts_ajax' );
}
这是员工最近的帖子ajax功能
function employee_recent_posts_ajax($atts)
{
$html = get_employee_recent_posts();
die($html);
}
完整的get_employee_recent_posts函数太长而无法发布。但是,这是导致问题的get_posts查询。请注意,当用户未登录时,$userid
和$catid
变量包含正确的数据。
$authorposts = get_posts(array('author'=>$userid, 'posts_per_page' => 2, 'order' => 'DESC', 'category' =>$catid));
如果任何人对如何解决这个问题有任何见解或想法,我们将不胜感激!
谢谢!
编辑:包括部分ajax请求代码。
jQuery.ajax({
crossDomain: true,
type: 'GET',
url: MyAjax.ajaxurl,
data: {
'action': 'employee_recent_posts_ajax',
'userid': userid
},