it-swarm-ja.com

Comments_popup_link()が返すtitle属性を変更するにはどうすればいいですか?

次の関数のパラメータからComment(s)を変更することでコメントのラベルを変更できます:comments_popup_link('No Comments;', '1 Comment;', '% Comments;');しかし、title属性はコアモジュールから返されるようです。コアモジュールを編集せずにtitle属性を変更してください。

2
user931

関数comments_popup_link()を調べると、最後に次のコードが表示されます。

$title = the_title_attribute( array('echo' => 0 ) );

echo apply_filters( 'comments_popup_link_attributes', '' );

echo ' title="' . esc_attr( sprintf( __('Comment on %s'), $title ) ) . '">';
comments_number( $zero, $one, $more );
echo '</a>'; // last line

翻訳関数__()の呼び出しに注意してください。結果を変更するために'gettext'をフィルタリングできます。私たちはすべての翻訳に対してフィルタを実行したくないので(遅すぎるので)、フック'comments_popup_link_attributes'が呼び出されたときにフィルタを開始します。

add_filter( 'comments_popup_link_attributes', 't5_cclta_init' );

function t5_cclta_init( $attrs )
{
    add_filter( 'gettext', 't5_cclta_change_title', 10, 3 );
    return $attrs;
}

今、私たちは本当のフィルター関数だけを必要とします:

function t5_cclta_change_title( $translated, $text, $domain )
{
    remove_filter( current_filter(), __FUNCTION__, 10 );

    if ( 'default' === $domain && 'Comment on %s' === $text )
        return 'Talk about %s';

    return $translated;
}

そして今、title属性はこう言います:The Post Titleについて話してください。

2
fuxia