Php Wordpress-使用Ajax跟踪用户列表

Php Wordpress-使用Ajax跟踪用户列表,php,ajax,wordpress,author,Php,Ajax,Wordpress,Author,我正在使用“”插件。到目前为止,我在author.php配置文件中添加了一个以下/关注者列表,现在我尝试使用Ajax,但我面临的问题是,我需要通过ID为每个用户获取相同的用户元,以便每个人都可以看到彼此的以下用户 在author.php中,我使用此行获取用户信息 <?php $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($autho

我正在使用“”插件。到目前为止,我在
author.php
配置文件中添加了一个以下/关注者列表,现在我尝试使用Ajax,但我面临的问题是,我需要通过ID为每个用户获取相同的用户元,以便每个人都可以看到彼此的以下用户

author.php
中,我使用此行获取用户信息

<?php
    $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
?>
但是,当我在Ajax函数处理程序中添加相同的行时,这些行不起作用

我尝试了
get_queryed_object()
wp_get_current_user()
获取用户数据()
但我总是失败

下面是author.php中的代码片段,用于获取以下用户的列表

<?php

$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));

$include = get_user_meta($curauth->ID, '_pwuf_following', true);

if ( empty( $include ) ) {

     echo 'Not followed anyone yet.';

    } else {

$args = array (
    'order' => 'DESC',
    'include'  => $include,
    'number'  => 52,
    'paged' => 1
);

$wp_user_query = new WP_User_Query( $args );

$users = $wp_user_query->get_results();

    echo '<div id="top-artists-contributors-3">';
    echo '<ul id="grid-contributors-4">';
    echo '<li class="scroll-artists">';
    foreach ( $users as $user ) {
        $avatar_size = 90;
        $avatar = get_avatar($user->user_email, 200);
        $author_profile_url = get_author_posts_url($user->ID);
        $profile = get_userdata($user->ID);

    echo '<div class="single-item-3">';
    echo '<div class="author-gravatar-3"><a href="', $author_profile_url, '">', $avatar , '</a></div>';
    echo '<div class="members-name"><a href="', $author_profile_url, '">' . $profile->first_name .'</a></div>';
    echo '</div>';           
    }
    echo '</li>';
    echo '</ul>';
    echo '</div>';
}
?>

这是获取Ajax url和操作的js

<script type="text/javascript">
var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
var page = 2;
var canBeLoaded = true,
bottomOffset = 2000;

jQuery(function($) {
$(window).scroll(function() {
    if( $(document).scrollTop() > ( $(document).height() - bottomOffset ) && canBeLoaded == true ) {
    canBeLoaded = false;
        var data = {
            'action': 'user_following_by_ajax',
            'page': page,
            'security': '<?php echo wp_create_nonce("user_more_following"); ?>'
        };
        $.post(ajaxurl, data, function(response) {
            $('#following').append(response);
            canBeLoaded = true;
            page++;
        });
    }
});
});
</script>

var ajaxurl=“”;
var-page=2;
var canBeLoaded=true,
底部偏移=2000;
jQuery(函数($){
$(窗口)。滚动(函数(){
if($(document.scrollTop()>($(document.height()-bottomOffset)&&canBeLoaded==true){
canBeLoaded=假;
风险值数据={
“操作”:“用户通过ajax跟踪”,
“页面”:页面,
“安全”:“
};
$.post(ajaxurl、数据、函数(响应){
$('#following')。追加(应答);
canBeLoaded=正确;
page++;
});
}
});
});
这是来自Ajax处理程序的function.php

add_action('wp_ajax_user_following_by_ajax', 'user_following_by_ajax_callback');
add_action('wp_ajax_nopriv_user_following_by_ajax', 'user_following_by_ajax_callback');

function user_following_by_ajax_callback() {
    check_ajax_referer('user_more_following', 'security');
    $paged = $_POST['page'];

$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));

$include = get_user_meta($curauth->ID, '_pwuf_following', true);


if ( empty( $include ) ) {

     echo 'Not followed anyone yet.';

    } else {

$args = array (
    'order' => 'DESC',
    'include'  => $include,
    'number'  => 52,
    'paged' => $paged
);

$wp_user_query = new WP_User_Query( $args );

$users = $wp_user_query->get_results();

    echo '<div id="top-artists-contributors-3">';
    echo '<ul id="grid-contributors-4">';
    echo '<li class="scroll-artists">';
    foreach ( $users as $user ) {
        $avatar_size = 90;
        $avatar = get_avatar($user->user_email, 200);
        $author_profile_url = get_author_posts_url($user->ID);
        $profile = get_userdata($user->ID);

    echo '<div class="single-item-3">';
    echo '<div class="author-gravatar-3"><a href="', $author_profile_url, '">', $avatar , '</a></div>';
    echo '<div class="members-name"><a href="', $author_profile_url, '">' . $profile->first_name .'</a></div>';
    echo '</div>';           
    }
    echo '</li>';
    echo '</ul>';
    echo '</div>';
    }
    wp_die();
}
add_action('wp_ajax_user_following_by_ajax','user_following_by_ajax_callback');
添加动作(“wp_ajax_nopriv_user_following_by_ajax”,“user_following_by_ajax_callback”);
函数用户\u通过\u ajax\u回调()跟随\u{
检查ajax\u referer('user\u more\u following','security');
$paged=$_POST['page'];
$curauth=(isset($\u GET['author\u name'])?GET\u user\u by('slug',$author\u name):GET\u userdata(intval($author));
$include=get_user_meta($curauth->ID,'u pwuf_following',true);
如果(空($包括)){
echo“还没有跟踪任何人”;
}否则{
$args=数组(
“订单”=>“描述”,
“包括”=>$include,
“数字”=>52,
“paged”=>paged美元
);
$wp\u user\u query=新的wp\u user\u查询($args);
$users=$wp\u user\u query->get\u results();
回声';
echo'
    ; echo'
  • ; foreach($users作为$user){ $avatar_size=90; $avatar=get_avatar($user->user_email,200); $author\u profile\u url=get\u author\u posts\u url($user->ID); $profile=get_userdata($user->ID); 回声'; 回声'; 回声'; 回声'; } 回音“
  • ”; 回声“
”; 回声'; } wp_die(); }
我可以看出您没有传递代码中使用的
作者姓名
字段。请检查下面的代码,我在其中添加了缺少的字段

           <script type="text/javascript">
            var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
            var page = 2;
            var canBeLoaded = true,
            bottomOffset = 2000;


            jQuery(function($) {
            $(window).scroll(function() {
                if( $(document).scrollTop() > ( $(document).height() - bottomOffset ) && canBeLoaded == true ) {
                canBeLoaded = false;
                    var data = {
                        'action': 'user_following_by_ajax',
                        'data': { page : 'page', author_name: '<?php echo get_the_author(); ?>' }, // Here set author name which you are getting.
                        'security': '<?php echo wp_create_nonce("user_more_following"); ?>'
                    };
                    $.post(ajaxurl, data, function(response) {
                        $('#following').append(response);
                        canBeLoaded = true;
                        page++;
                    });
                }
            });
            });
            </script>

var ajaxurl=“”;
var-page=2;
var canBeLoaded=true,
底部偏移=2000;
jQuery(函数($){
$(窗口)。滚动(函数(){
if($(document.scrollTop()>($(document.height()-bottomOffset)&&canBeLoaded==true){
canBeLoaded=假;
风险值数据={
“操作”:“用户通过ajax跟踪”,
'data':{page:'page',author_name:'},//此处设置您要获取的作者名称。
“安全”:“
};
$.post(ajaxurl、数据、函数(响应){
$('#following')。追加(应答);
canBeLoaded=正确;
page++;
});
}
});
});

您是否尝试过
获取当前用户id()
?感谢您的评论,是的,我尝试过,但没有发生任何事情,您能告诉我如何正确地在Ajax函数和以下列表中获取相同的用户元。我不理解Ajax回调中的这一行:
$curauth=(isset($\u get['author\u name'])?获取用户信息('slug',$author\u name):获取用户信息(intval($author))
似乎既没有设置
$author\u name
也没有设置
$author
,而且GET参数从何而来,因为你做了
$。post
?谢谢@Michael,我是wp的新手,我只是一个艺术家,从新的多作者网站开始,所以我所做的一切都是从搜索开始的,现在我有了一点插入代码的知识,但我没有我不会编码,所以,如果你能给我正确的代码或者如何让它工作,请告诉我!顺便说一句,这一行是从author.php获取的,试图从meta_key
\u pwuf\u following
获取相同的用户meta。谢谢!我添加了你的行,但没有发生任何事情,我得到“还没有跟踪任何人”而不是用户,代码的其余部分可以吗?在这里,您需要在数据中传递作者姓名,每次我向上滚动“尚未跟踪任何人”都在重复。对不起,我如何在数据中传递作者姓名,我对wp;(,我很感兴趣。谢谢!但我认为主要的问题是如何覆盖
$curauth=(isset($\u GET['author\u name'])?getu user\u by('slug',$author\u name):getu userdata(intval($author));
进入Ajax处理程序函数,当我使用
$author=wp\u get\u current\u user();
时..使用
$include=getu user\u meta($author->ID,'u pwuf following',true)
它使用
wp\u get\u current\u user();
但是我看不到我们的用户,我在他们的个人资料中看到了我自己的用户,你现在明白了吗?
           <script type="text/javascript">
            var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
            var page = 2;
            var canBeLoaded = true,
            bottomOffset = 2000;


            jQuery(function($) {
            $(window).scroll(function() {
                if( $(document).scrollTop() > ( $(document).height() - bottomOffset ) && canBeLoaded == true ) {
                canBeLoaded = false;
                    var data = {
                        'action': 'user_following_by_ajax',
                        'data': { page : 'page', author_name: '<?php echo get_the_author(); ?>' }, // Here set author name which you are getting.
                        'security': '<?php echo wp_create_nonce("user_more_following"); ?>'
                    };
                    $.post(ajaxurl, data, function(response) {
                        $('#following').append(response);
                        canBeLoaded = true;
                        page++;
                    });
                }
            });
            });
            </script>