预先填充wp-login.php用户名

时间:2013-10-31 14:46:44

标签: php wordpress

我有一个WP网站,我向客户发送一封电子邮件,其中包含指向/ my-quotes / this的链接,具有以下代码:

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

我想要做的是,在电子邮件中提供以下链接: /我的引号/?登录名=名为myUsername

并且'myusername'是用于保存用户重新输入的登录字段值。

我看过wp-login.php并且无法使用$ _GET来填充登录字段的位置,有人可以就解决方案提出建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您应该通过挂钩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>
相关问题