这很有趣,但只有天才才能弄清楚这一点。这是一个奇怪的事情。
需要一点 JavaScript 并对我现有的 php wordpress 功能进行一些调整。
我有一个 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 为人们提供访问权限,而无需他们知道用户名或密码。
任何想法或帮助都会很棒,谢谢!
最佳答案
对于这样的网址...
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');
如果您想使用如下网址:
http://example.com/?ul=media&up=5434535
要将非成员(member)重定向到预先填写的登录表单,您可以使用原始“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;
}
}
关于php - 通过 php 登录重定向函数将变量从 URL 传递到 wp-login 表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13279611/