Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否仅向登录用户显示用户名?_Php_Wordpress_Comments - Fatal编程技术网

Php 是否仅向登录用户显示用户名?

Php 是否仅向登录用户显示用户名?,php,wordpress,comments,Php,Wordpress,Comments,我有一个Wordpress博客,通过硬编码到comments.php文件,将评论显示为“匿名用户”。我想让它说,用户的用户名旁边的评论,只显示该用户名给他们。换句话说,如果他们是客人,他们会看到“匿名用户”,如果他们是注册/登录的不同用户,他们仍然会看到“匿名用户”,但如果是他们的评论,则会显示“你的评论”或他们自己的用户名。有关于代码片段的线索吗?以下是我目前掌握的情况: 匿名用户:检查当前访问者是否已登录 基本上,您需要获取评论作者的ID,获取登录用户的ID,然后比较两者。看一看法典 我尚

我有一个Wordpress博客,通过硬编码到comments.php文件,将评论显示为“匿名用户”。我想让它说,用户的用户名旁边的评论,只显示该用户名给他们。换句话说,如果他们是客人,他们会看到“匿名用户”,如果他们是注册/登录的不同用户,他们仍然会看到“匿名用户”,但如果是他们的评论,则会显示“你的评论”或他们自己的用户名。有关于代码片段的线索吗?以下是我目前掌握的情况:


匿名用户:检查当前访问者是否已登录


基本上,您需要获取评论作者的ID,获取登录用户的ID,然后比较两者。看一看法典

我尚未测试此代码段,但它应该为您指出正确的方向:

<?php global $user_id, $user_login; 
    get_currentuserinfo();  // This will populate $user_id with the logged in user's ID or '' if not logged in
    $the_comment = get_comment(comment_ID());  // Get a comment Object...
    $author_id = $the_comment->user_id; // and extract the commenter's ID

    if($user_id !== '' && $author_id == $user_id){
        echo 'Your comment [ ' . $user_login . ' ]:';
    }
    else{
        echo 'Anonymous User:';
    }
?>


好吧,这只会让我知道我是否登录,但它不会将两个条件语句分开。我认为这是一个正确的开始,但我认为它需要说一些类似“如果用户登录,并且用户名=相同登录名”的话,但我不知道如何编写代码……约翰·P·布洛赫上面的回答非常好。如果将它添加到functions.php文件中,您可以在任何地方调用它。我尝试了上面的答案,但无法使其工作,因此我尝试了您的答案,以查看它是否工作,它似乎在匿名用户文本旁边添加了一个数字,但显示不正确。谢谢你能试着回显$user\u id、$author\u id和$user\u login以查看返回的内容吗?是否看到当前登录用户的详细信息和评论作者的ID?如果允许任何缓存,则需要“variages:Cookie”标题。@symcbean true。此外,如果您希望评论向所有人显示文章作者的姓名,则需要添加另一项针对作者的检查。另外,最好只使用评论作者的姓名,而不是评论作者的链接。好吧,我尝试了这种方法,一开始我遇到了一个错误,所以我不得不删除前两个单词之间的=符号(function=my_custom…),然后它抛出了另一个错误,意外的$end,因此,我在最后一个close}之后和add_过滤器之前添加了第二个close}。现在,没有更多的错误,但是,当我尝试将我的新函数放入主题文件时,我得到另一个错误,告诉我它需要args。我不知道该用什么参数。我在输入“”,但显然不起作用。有什么想法吗?多谢!对您需要在函数声明中保留$author。这就是参数传递到函数中的方式。我将编辑答案以反映您的更改。很抱歉。我想我只是错过了它们……好吧,出于某种奇怪的原因,将其添加到我的functions.php文件中,而不做任何其他操作,这将应用于管理仪表板(评论部分)。知道为什么吗?我只想让这个函数在前端工作。我希望任何有权访问后端的人都能看到正确的用户名。你在这里找到解决方案了吗?如果是,请标记您选择的答案。
<?php if ( is_user_logged_in() ) { 
    ....
} else {
    ....
} ?> 
<?php global $user_id, $user_login; 
    get_currentuserinfo();  // This will populate $user_id with the logged in user's ID or '' if not logged in
    $the_comment = get_comment(comment_ID());  // Get a comment Object...
    $author_id = $the_comment->user_id; // and extract the commenter's ID

    if($user_id !== '' && $author_id == $user_id){
        echo 'Your comment [ ' . $user_login . ' ]:';
    }
    else{
        echo 'Anonymous User:';
    }
?>