it-swarm.com.de

Wie ändere ich das von comments_popup_link () zurückgegebene title-Attribut?

Ich kann die Beschriftung von Kommentaren ändern, indem ich die Kommentare im Parameter der folgenden Funktion ändere: comments_popup_link('No Comments;', '1 Comment;', '% Comments;'); Es scheint jedoch, dass das title-Attribut von Kernmodulen zurückgegeben wird. Schlagen Sie mir vor, das title-Attribut zu ändern, ohne die Kernmodule zu bearbeiten.

2
user931

Wenn Sie sich die Funktion comments_popup_link() ansehen, sehen Sie am Ende den folgenden Code:

$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

Beachten Sie den Aufruf von __(), der Übersetzungsfunktion. Wir können 'gettext' filtern, um das Ergebnis zu ändern. Da wir unseren Filter nicht bei jeder Übersetzung ausführen möchten - das wäre zu langsam - starten wir den Filter, wenn der Hook 'comments_popup_link_attributes' aufgerufen wird:

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;
}

Jetzt brauchen wir nur noch die eigentliche Filterfunktion:

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;
}

Und jetzt lautet das title-Attribut: Sprechen Sie über den Post-Titel .

2
fuxia