web-dev-qa-db-ja.com

WP_Comments_List_Tableのcolumn_authorを変更します。

バックエンドのedit-comments.phpセクションのauthorカラムの値を修正することは可能ですか?フック?コメント投稿者のメールのmailtoフィールドを件名と本文を含むように変更したい。 2、3か月前に誰かがどこで言ったかがわかったのは確かですが、二度と見つけることができません。

5

これが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フィルタを探しているでしょう。

更新:

これは件名本文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 );
}

これはcomment_emailページで、edit-comments.phpフィルタが適用されるたびに最初のesc_url()をターゲットにすることに注意してください。

それがEメール部分のものであることを確認するためにmailtoチェックを追加しました。

5
birgire