修改WP_Comments_List_Table中的COLUMN_AUTHER

时间:2017-03-05 作者:lost.in.userspace

是否可以修改编辑注释中“作者”列中的值。后端的php部分?一个钩子?我想更改评论者电子邮件的mailto字段,以包含主题和正文。我很确定我找到了几个月前有人说过有办法的地方,但我再也找不到了。

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

这是电子邮件部分的显示方式WP_Comments_List::column_author() 方法:

/* This filter is documented in wp-includes/comment-template.php */
$email = apply_filters( \'comment_email\', $comment->comment_author_email, $comment );

if ( ! empty( $email ) && \'@\' !== $email ) {
    printf( \'<a href="%1$s">%2$s</a><br />\', esc_url( \'mailto:\' . $email ), esc_html( $email ) );
}
所以你很可能在寻找comment_email 滤器

Update:

这里有一个将主题和正文添加到mailto 零件:

add_filter( \'comment_email\', function( $email )
{
    // Target the edit-comments.php screen
    if( did_action( \'load-edit-comments.php\' ) )
        add_filter( \'clean_url\', \'wpse_258903_append_subject_and_body\' );       

    return $email;
} );

function wpse_258903_append_subject_and_body( $url )
{
    // Only run once
    remove_filter( current_filter(), __FUNCTION__ );

    // Adjust to your needs:
    $args = [ \'subject\' => \'hello\', \'body\' => \'world\' ];

    // Only append to a mailto url
    if( \'mailto\' === wp_parse_url($url, PHP_URL_SCHEME )  )
        $url .= \'?\' . build_query( $args );

    return esc_url( $url );
}
请注意,这是针对第一个esc_url() 每次comment_email 过滤器应用于edit-comments.php

我们添加了一个mailto检查,以确保它是针对电子邮件部分的。

相关推荐

Delete comments function

我做了一个功能,向登录用户显示她的所有评论,并允许她通过与打印的每个评论相关的删除按钮单独删除这些评论。该功能起作用,但在执行表单操作后,刷新时页面仍会显示已删除的注释,并且仅当您再次转到该页面(不是刷新,而是通过单击浏览器地址栏上的返回键)时,页面才会显示已批准的注释。如何解决此问题?代码如下: function custom_delete_post_comment() { $comment_id = comment_ID();