2010-06-11 125 views
4

我有一個WordPress的博客設置爲顯示評論作爲「匿名用戶」通過硬編碼到comments.php文件。我希望在用戶的評論旁邊說出用戶的用戶名,並且只將該用戶名顯示給他們。換句話說,如果他們是訪客,他們會看到「匿名用戶」,如果他們是已註冊/登錄的不同用戶,他們仍然會看到「匿名用戶」,但如果它是他們的評論,它會說「你的評論」或他們自己的用戶名。任何線索的代碼片段?這是我到目前爲止有:僅顯示用戶名以登錄用戶?

Anonymous User: <div class="post-txt" id="<?php comment_ID() ?>"><?php comment_text() ?></div>

謝謝!如果當前訪問者登錄 http://codex.wordpress.org/Function_Reference/is_user_logged_in

<?php if (is_user_logged_in()) { 
    .... 
} else { 
    .... 
} ?> 
+0

你找到你的解決方案嗎?如果是,請標記您選擇的答案。 – Steven 2010-09-02 09:04:24

回答

2
function my_custom_comment_author_filter($author){ 
    global $current_user; 
    wp_get_current_user(); 
    if(!is_category(3)){ 
    return $author; 
    } 
    if(0 == $current_user->ID || ($current_user->display_name !== $author && $current_user->user_login !== $author)){ 
    return 'Anonymous User'; 
    } 
    return $author; 
} 

add_filter('get_comment_author', 'my_custom_comment_author_filter'); 
+0

如果允許任何緩存,則需要'vary:Cookie'標頭。 – symcbean 2010-06-11 15:01:50

+0

@symcbean true。 此外,如果您希望評論向所有人顯示發佈作者的名稱,則需要針對作者添加另一個檢查。另外,僅使用評論作者的名字而不是評論作者的鏈接可能是一個好主意。 – 2010-06-11 15:32:36

+0

好吧,我試過這種方式,起初我得到一個錯誤,所以我不得不刪除前兩個單詞(函數= my_custom ...)之間的=號,然後拋出另一個錯誤,意外的$結束,所以我在最後一個和add_filter之前添加了第二個close。現在,沒有更多的錯誤,但是,當我嘗試將我的新功能放到我的主題文件中時,出現另一個錯誤,告訴我它需要參數。我不確定使用什麼參數。我在輸入「<?php my_custom_comment_author_filter()?>」但顯然這不起作用。有任何想法嗎?非常感謝! – RodeoRamsey 2010-06-13 14:28:51

1

檢查,你將需要獲得評論作者的ID,獲得用戶的ID登錄,並比較兩者。看看Codex的getting the current logged in usergetting information about the current comment

我沒有測試過這個片段中,但它應該指向你在正確的方向:

<?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:'; 
    } 
?> 
+1

那麼,這隻會讓我知道,如果我登錄或不,但它並沒有分開兩個條件陳述。 我認爲這是正確的開始,但我認爲它需要說「如果用戶登錄,並且用戶名是=相同的登錄名」,但我不知道如何編碼... – RodeoRamsey 2010-06-11 14:27:18

2

基本上

+0

John P. Bloch的回答非常好。添加到你的functions.php文件將允許你在任何地方調用。 – ajm 2010-06-11 14:30:00

+0

我試過上面的答案,不能得到它的工作,所以我試着你的答案,看看它是否會工作,它似乎在匿名用戶文本旁邊添加一個數字,但它無法正確顯示。謝謝! – RodeoRamsey 2010-06-13 14:29:42

+0

您可以嘗試回顯$ user_id,$ author_id和$ user_login以查看返回的內容嗎?您是否看到當前登錄用戶的詳細信息和評論作者的ID? – ajm 2010-06-14 15:57:21