将字段添加到自定义WP登录表单

时间:2018-06-10 07:06:34

标签: wordpress

我有一个自定义登录表单,我使用以下内容显示在页面上:

        $my_login_args = apply_filters( 'my_login_page_args', array(
            'echo'           => true,
            'redirect'       => site_url( $_SERVER['REQUEST_URI'] ), 
            'form_id'        => 'my_login_form',
            'label_username' => esc_html__( 'Email Address' ),
            'label_password' => esc_html__( 'Password' ),
            'label_remember' => esc_html__( 'Remember Me' ),
            'label_log_in'   => esc_html__( 'Sign In' ),
            'id_username'    => 'user_login',
            'id_password'    => 'user_pass',
            'id_remember'    => 'rememberme',
            'id_submit'      => 'wp-submit',
            'remember'       => true,
            'value_username' => NULL,
            'value_remember' => false
        ) );
        wp_login_form( $my_login_args ); ?>

我需要将登录页面中存储的自定义变量($ my_custom_id)传递给用户在登录后看到的重定向页面。有没有办法使用POST或GET使用此变量附加URL,或者是将其作为表单中的隐藏字段添加的最佳解决方案?

此外,在向表单添加额外字段方面,我尝试使用

向表单添加自定义输入框
add_action('login_form','my_added_login_field');
function my_added_login_field(){
    //Output your HTML
?>
    <p>
        <label for="my_extra_field">My extra field<br>
        <input type="text" tabindex="20" size="20" value="" class="input" id="my_extra_field" name="my_extra_field_name"></label>
    </p>
<?php
}

但是,这只会将字段添加到主Wordpress登录,而不是我的自定义表单。关于如何最好地进行的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以在登录表单的顶部,底部和中间添加自定义字段。

我在login_form_middle中添加了登录字段。

参考https://core.trac.wordpress.org/browser/tags/4.9/src/wp-includes/general-template.php#L390

https://codex.wordpress.org/Customizing_the_Login_Form

 /*
 You can use these hooks as well to place your fields    
 login_form_bottom - login_form_top - login_form_middle
 */

 add_filter('login_form_middle','my_added_login_field');
 function my_added_login_field(){
     //Output your HTML
     $additional_field = '<div class="login-custom-field-wrapper"">
         <label for="my_extra_field">My extra field<br>
         <input type="text" tabindex="20" size="20" value="" class="input" id="my_extra_field" name="my_extra_field_name"></label>
     </div>';

     return $additional_field;
 }