1

これは面白いものですが、おそらくこれを理解できるのは天才だけです。それは奇妙なものです。

小さな JavaScript と、既存の php ワードプレス関数を少し調整する必要があります。

私は、この機能を使用して一般公開されていない wp サイトを持っています...

add_action('get_header', 'wpq_member_only_site');
function wpq_member_only_site() {

    if ( !is_user_logged_in() ) {

        $redirect_after_login = get_home_url();

        $login_url = wp_login_url( $redirect_after_login );

        wp_redirect( $login_url, 302 );
        exit;
    }

}

...ログインしていないユーザーをログインフォームにリダイレクトします。

私の質問は、このような URL 変数を使用したいということです...

http://example.com?user=media&password=23747

...そしてどういうわけか、(私は推測する)それを関数を介してログインページのURLに渡します...

http://example.com/wp-login.php?redirect_to=http%3A%2F%2Fexample.com&user=media&password=23747

...そのため、login_head のスクリプトを使用して、ログイン フォームを自動的に事前入力できます。

この関数を使用してスクリプトを login_head に挿入します...

function my_login_head() {
  echo '

      <!-- script here -->
  ';
}
add_action('login_head', 'my_login_head');

誰かがこれで私を助けることができると思いますか? またはそれが可能かどうかを知っています。

アイデアは、この URL を使用して、ユーザー名やパスワードを知らなくてもアクセスできるようにすることです。

どんなアイデアや助けも素晴らしいでしょう、ありがとう!

4

2 に答える 2

1

このようなURLの場合...

http://example.com/wp-login.php?ul=media&up=5434535

function my_login_head() {
        if(isset($_GET['ul'])&& isset($_GET['up'])){
                $ul=esc_attr($_GET['ul']);
                $up=esc_attr($_GET['up']);
                echo '<script>
                        window.onload = function() {
                                var ul=document.getElementById("user_login");
                                ul.value = "'.$ul.'";
                                var up=document.getElementById("user_pass");
                                up.value = "'.$up.'";
                        }
                </script>';
        }
}
add_action('login_head', 'my_login_head');


次のような URL を使用する場合:

http://example.com/?ul=media&up=5434535

非メンバーを事前入力済みのログイン フォームにリダイレクトするには、元の「wpq_member_only_site」関数のこの修正バージョンを使用できます。

add_action('get_header', 'wpq_member_only_site');
function wpq_member_only_site() {
        if ( !is_user_logged_in() ) {
                $redirect_after_login = get_home_url();
                $autofill="";
                if(isset($_GET['ul']) && isset($_GET['up'])){
                        $ul=esc_attr($_GET['ul']);
                        $up=esc_attr($_GET['up']);
                        $autofill="&ul=".$ul."&up=".$up;
                }
                $login_url = wp_login_url( $redirect_after_login ).$autofill;
                wp_redirect( $login_url, 302 );
                exit;
        }
}
于 2012-11-08T00:08:00.603 に答える
0

これを書くと、別の方法でこれを行うことができるように思えます: wp_signon()関数を呼び出すだけなので、wp-login.php をいじる必要はありません。wp_signon($credentials) と wp_redirect($wherever) だけです。

これは任意のページで実行できるため、サムドライブの手法で にリンクできますsite.com/member-login/?query=string/member-loginこの情報を処理するカスタム テンプレートになります。

私が提案するかもしれないこと: ハッシュを作成して、これをもう少しあいまいにします。次に、次のようになります /member-login/?x=Ajzf29xjz4jfjAJkdSlj3

とにかく...元の答えに戻ります。近くにいるような…

wp_redirect('wp-login.php?redirect_to=http%3A%2F%2Fexample.com&user=media&password=23747');

ログイン ヘッド関数で、これらの$_GET変数を追跡して、それらが通過していることを確認してください。このページには jQuery が読み込まれていないと思うので、<script>使用する場合は jQuery インクルードをエコーする必要があります。

あなたのログインヘッド機能:

<script src="jquery.js"></script>
<script>
$(document).ready(function(){
    $("form selector").val("<?php echo $_GET['user']; ?>");
});

そんな感じ?

つまりね:

彼らはまだ送信ボタンをクリックする必要があります。

簡単な関数呼び出しを使用してユーザーをログインできることをご存知ですか? wp_signon()

于 2012-11-07T23:06:03.793 に答える