wordpress中的联系表单与自定义页面

时间:2018-05-09 12:43:32

标签: php html wordpress

我正在尝试在我的网站上注册/登录,但我无法理解如何做到这一点,因为我正在尝试做一个wordpress主题,而在我的主题中没有小部件选项。我已经创建了模板页面,我想整合这些页面。 帮帮我

1 个答案:

答案 0 :(得分:0)

在自定义WP主题中添加登录和注册

以下是您可以根据自己的要求稍后编辑的表单字段。

您有user_nick_name,可以用作用户名。 电子邮件,然后在最后提交按钮中输入密码。

<form id="sign_up_form" action="" method="post">
    <input type="text" id="user_nickname" name="user_nickname" placeholder="Enter user desire username" />
    <input type="text" id="user_email" name="user_email" placeholder="Enter your email" />
    <input id="user_pass" name="user_pass" type="password" placeholder="Enter your password">
    <input type="submit" value="Register now" />
</form>

您需要将以下代码放在JS文件中,此代码将帮助您生成Ajax请求。

重要提示:我在ajax-signup-script.js中添加了以下代码,我已将其放在js文件夹中,请确保您保留相同的名称以便继续使用相同的代码,如果您想要重命名这个文件,你还需要从另一个地方替换它以使工作正常。

jQuery(document).ready(function($){
    "use strict";

 // Sign Up
 $('form#sign_up_form').on('submit', function(e){
    $('form#sign_up_form p.status').show().text(ajax_signup_object.loadingmessage);
    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: ajax_signup_object.ajaxurl,
        data: { 
            'action': 'custom_signup', //calls wp_ajax_nopriv_ajaxlogin
            'nickname': $('form#sign_up_form #user_nickname').val(), 
            'user_email': $('form#sign_up_form #user_email').val(), 
            'user_pass': $('form#sign_up_form #user_pass').val() },
        success: function(data){
            $('form#sign_up_form p.status').text(data.message);
            if (data.signup == true){
                document.location.href = ajax_signup_object.redirecturl;
            }
        }
    });
    e.preventDefault();
});
});

几乎完成了我们已经开始的工作,您需要将此代码放在functions.php。

  function wordpress_custom_signup_function(){

    //Get Defined Role by WordPress
    $default_role = get_option('default_role');

    $nickname = $_POST['nickname'];
    $user_email = $_POST['user_email'];
    $user_pass = $_POST['user_pass'];       

    //Check For the NickName Empty
    if(isset($nickname) && $nickname <> ''){
        $userdata = array(
            'user_login'    => $nickname,
            'user_email'  => $user_email,
            'user_pass'  => $user_pass,
            'role' => $default_role
        );
        $exists = email_exists($user_email);
        $user_signup = wp_insert_user( $userdata );
        if ( !$exists ){
            if ( is_wp_error($user_signup) ){
                echo json_encode(array('signup'=>false, 'message'=>esc_attr__('Please verify the details you are providing.','custom-theme')));
            } else {
                echo json_encode(array('signup'=>true, 'message'=>esc_attr__('Your request submitted successfully, Redirecting you to login page!','custom-theme')));
            }
        }else{
            echo json_encode(array('signup'=>false, 'message'=>'Notice: Email already exists!'.$exists.''));            
        }
    }else{
        echo json_encode(array('signup'=>false, 'message'=>esc_attr__('Please verify the details you are providing.','custom-theme')));
    }

    die();
}   

 function custom_function_for_signup(){

    wp_register_script('ajax-signup-script', get_template_directory_uri().'/js/ajax-signup-script.js', array('jquery') ); 
    wp_enqueue_script('ajax-signup-script');

    wp_localize_script( 'ajax-signup-script', 'ajax_signup_object', array( 
        'ajaxurl' => esc_url(admin_url( 'admin-ajax.php' )),
        'redirecturl' => esc_url(home_url()),
        'loadingmessage' => esc_attr__('Sending user info, please wait...','custom-theme')
    ));

    // Enable the user with no privileges to run ajax_login() in AJAX
    add_action('wp_ajax_custom_signup', 'wordpress_custom_signup_function');
    add_action('wp_ajax_nopriv_custom_signup', 'wordpress_custom_signup_function' );
}

add_action('init', 'custom_function_for_signup');