web-dev-qa-db-ja.com

「今ログアウトしました」というテキストを変更します。

「ログアウト」という単語を<strong></strong>で囲みたいです。

add_filter( 'gettext', 'wpse17709_gettext', 10, 2 );
function wpse17709_gettext( $custom_translation, $login_texts ) {

    // Messages
    if ( 'You are now logged out.' == $login_texts ) { return ''; } // Log out message

    return $translation
}

...しかし、テキスト文字列にHTML要素を追加すると私のページが壊れます。

このメッセージテキストに<strong></strong>を追加するにはどうすればよいですか? gettext以外の手段はありますか?

3
Clarus Dignus

これにより、他のすべてのメッセージをそのままにして、メッセージをloggedoutメッセージ専用に上書きすることができます。 これはフィルタに関するより多くのドキュメントです

add_filter( 'wp_login_errors', 'my_logout_message' );

function my_logout_message( $errors ){

    if ( isset( $errors->errors['loggedout'] ) ){
        $errors->errors['loggedout'][0] = 'This is the <strong style="color:red;">logged out</strong> message.';
    }

    return $errors;
}
3
Nathan Powell

Filter login_messages を使用して、「あなたはログアウトしました」というテキストを変更します。

function custom_logout_message(){
  return 'You are not login!';
}
add_filter( 'login_messages', 'custom_logout_message' );
1
Super Model

Svenの推奨する解決策とTom J Nowellのgettext()に関する警告(両方のコメントを参照)に基づいて、私は次の解決策を作りました。

add_filter( 'login_message', 'wpse_215289_custom_logout_message' );
add_action( 'login_head','wpse_215289_custom_login_head' );

// Detect logout and add custom message.
function wpse_215289_custom_logout_message() 
{
    //check to see if it's the logout screen
    if ( isset($_GET['loggedout']) && TRUE == $_GET['loggedout'] ){
        $message = "<p class='message'>Custom log-out message.</p>";
    }
    return $message;
} 

// Remove original message via CSS.
function wpse_215289_custom_login_head() 
{
    ?>
    <style type="text/css">
    .message:nth-child(2) { display:none; }
    </style>
    <?php
}
1
Clarus Dignus