3

/my-quotes/へのリンクを含むメールを顧客に送信するWPサイトがあります。これには次のコードがあります。

<?
if (!is_user_logged_in()): ?>
<meta http-equiv="refresh" content="0;URL=<? echo wp_login_url(get_permalink()); ?>">
<? endif; ?>

私がしたいのは、次のようなリンクを電子メールで提供することです: /my-quotes/?login=myusername

その「myusername」は、ユーザーが再入力するのを保存するためのログイン フィールドの値です。

wp-login.php を調べたところ、$_GET を使用してログイン フィールドにデータを入力する場所がわかりません。解決策についてアドバイスしてもらえますか?

前もって感謝します。

4

1 に答える 1

4

login_form次の更新で上書きされる wp-login.php を変更するのではなく、アクションにフックすることでこれを行う必要があります。

このコードをテーマのfunctions.phpファイルに追加できます。

// As part of WP login form construction, call our function
add_filter ( 'login_form', 'login_form_prepop' );

function login_form_prepop(){
    // Output jQuery to pre-fill the box

    if ( isset( $_REQUEST['myusername'] ) ) { // Make sure a username was passed
?>
<!-- Small jQuery script to set the value of the input field to your variable -->

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function(){
    $("#user_login").val( '<?php echo( $_REQUEST['myusername'] ); ?>' );
});
</script>
<?php
    }
}

次に、コードを更新して変数を含めます。

<?
if (!is_user_logged_in()): ?>
<meta http-equiv="refresh" content="0;URL=<? echo wp_login_url(get_permalink()); ?>?myusername=username">
<? endif; ?>

jQuery のフットプリントが大きすぎる場合は、JavaScript を使用して同じことを実現できます。

<script type="text/javascript">
var el = document.getElementById("user_login");
el.value = "<?php echo( $_REQUEST['myusername'] ); ?>";
</script>
于 2013-10-31T14:51:03.363 に答える