web-dev-qa-db-ja.com

ログインフォームから「Remember Me」を削除します

私は自分のサイトのフロントエンドにあるフォームを持っています。 [Remember me]チェックボックスを削除しようとしていますが、これを機能させることができません。これが私のフォームコードです。

<?php

    $args = array(
        'echo'           => true,
        'remember'       => true,
        'redirect'       => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'],
        'form_id'        => 'loginform',
        'id_username'    => 'user_login',
        'id_password'    => 'user_pass',
        'id_remember'    => 'rememberme',
        'id_submit'      => 'wp-submit',
        'label_username' => __( 'Username' ),
        'label_password' => __( 'Password' ),
        'label_remember' => __( 'Remember Me' ),
        'label_log_in'   => __( 'Log In' ),
        'value_username' => '',
        'value_remember' => false
    );


    wp_login_form( $args );
    ?>

私はこのコードを試したことがありますが、これはwp-adminフォーム用であると思います(そして私のフォームではうまくいきません)。

add_action('login_head', 'do_not_remember_me');
function do_not_remember_me()
{
echo '<style type="text/css">.forgetmenot { display:none; }</style>';
}

これを適切に行う方法について何かアイデアはありますか?

2

wp_login_form()にはremember引数があります。 falseに設定するだけです。

$args = array(
    'remember' => false,
);

wp_login_form( $args );
2

生成したページコードを調べて(またはInspect要素を使用して)、ブロックしたい領域にどのCSSクラスが割り当てられているかを確認します。次に、そのCSSコードをテーマの追加のCSSに追加します。

CSSクラスが「rememberme」の場合、

.rememberme {display:none !important;}

テーマの追加CSS(カスタマイザ経由)では、そのブロックを非表示にする必要があります。

追加

次のようにlogin_form_defaultsフィルタを調べます。

add_filter('login_form_defaults', $args);

あなたの$ argsを使う。これはwp_login_form()関数のデフォルト引数を設定することになっています。

...そしてwp_login_formによって使用されるクラスは https://core.trac.wordpress.org/browser/tags/4.9.6/src/wp-includes/general-template.php#の470行目についてのlogin-rememberです。 L0 コアコード(コアコードを見ることは常に役に立ちます...)

** 追加 **

まあ、上記のコードは正しくありません。ドキュメントによると、これは動作するはずです。

    add_filter( 'login_form_defaults', 'wp_disable_remember_me',10,1);

function wp_disable_remember_me($args ) {

    $args['value_remember'] = false;
    $args['remember']= false;
return $args;
}

....でもそうではありません。理由がわからない。いくつかのサイト/テーマでそれをテストしました。

したがって、おそらくCSSの「非表示」ソリューションが唯一の選択肢です。

0
Rick Hellewell