仅删除订阅者的评论作者链接

时间:2020-05-11 作者:Honoluluman

我正在使用此功能

add_filter( \'get_comment_author_link\', \'remove_comment_author_link\', 10, 3 );
function remove_comment_author_link( $return, $author, $comment_ID ) {
   return $author;
}
从帖子的评论中删除用户配置文件链接。

我一直在尝试使用这个过滤器,但只删除来自订阅用户的链接,而不是每个人的链接。

任何帮助都将不胜感激。

1 个回复
最合适的回答,由SO网友:Rup 整理而成

这感觉不太好,因为它调用了get\\u comment()和get\\u userdata(),但我不确定有没有更好的方法,因为调用它的代码没有传入我们需要的记录:

function remove_comment_author_link( $return, $author, $comment_ID ) {
    $comment = get_comment( $comment_ID );

    if ( $comment && $comment->user_id ) {
        $user = get_userdata( $comment->user_id );

        if ( $user && $user->has_cap( "edit_posts" ) ) {
            // This user is contributor or better: show author link
            return $return;
        }
    }

    // Subscriber or not a blog user
    return $author;
}
和其他函数已经进行了完全相同的查找,因此这些值已经位于此页面加载的wp\\u cache\\u get()中。

我还使用“edit\\u posts”来测试用户是否比订阅者更好:可能也有更好的方法来做到这一点。(我很惊讶我们不需要HTML转义$author,但现有的get\\u author\\u comment\\u link()代码不需要。)

相关推荐

Apply_Filters()对所需的参数进行切片

我正在尝试向WooCommerce订单中的每个退款行添加一个按钮(其功能超出了这个问题的范围,足以说明它需要退款id作为参数)。我发现这些行是在woocommerce\\includes\\admin\\meta Box\\views\\html订单退款中创建的。无法重写的php。然而,有一项行动:do_action( \'woocommerce_admin_order_item_values\', null, $refund, $refund->get_id() ); 这似乎非常适合我的