Pada wordpress mungkin kalian pasti mengetahui bahwa pendaftaran pengguna pada wordpress tidak dapat menentukan password sendiri, sehingga password yang akan didapat akan dikirimkan ke email pengguna tersebut. dalam kasus ini konsep seperti itu memang sangat bagus untuk mencegah terjadinya spam, namun jika kalian ingin agar pengguna dapat mendaftar tanpa verifikasi lagi lewat email maka kalian dapat menggunakan cara ini untuk mengimplementasikannya.

namun perlu diingat cara ini mungkin dapat membuat situs kalian menerima akun spam karena saya juga pernah mengalami hal serupa pada situs ini, tidak ada garansi yang diberikan jika menggunakan artikel ini namun kalian dapat menanyakannya pada artikel ini.

Code untuk function.php

Untuk mengimplementasikan halaman register pada halaman baru pada wordpress membutuhkan sedikit code yang mungkin akan sedikit menguras pikiran jika ingin tampilannya di modifikasi kembali, disini kalian tidak dapat mengubah tampilannya diluar file function.php karena code html tampilan tersebut sudah menjadi satu pada code yang di input kedalam function.php.

function custom_registration_function() {
    if (isset($_POST['submit'])) {
        registration_validation(
        $_POST['username'],
        $_POST['password'],
        $_POST['email'],
        $_POST['website'],
        $_POST['fname'],
        $_POST['lname'],
        $_POST['nickname'],
        $_POST['bio']
        );
        
        // sanitize user form input
        global $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
        $username   =   sanitize_user($_POST['username']);
        $password   =   esc_attr($_POST['password']);
        $email      =   sanitize_email($_POST['email']);
        $website    =   esc_url($_POST['website']);
        $first_name =   sanitize_text_field($_POST['fname']);
        $last_name  =   sanitize_text_field($_POST['lname']);
        $nickname   =   sanitize_text_field($_POST['nickname']);
        $bio        =   esc_textarea($_POST['bio']);

        // call @function complete_registration to create the user
        // only when no WP_error is found
        complete_registration(
        $username,
        $password,
        $email,
        $website,
        $first_name,
        $last_name,
        $nickname,
        $bio
        );
    }

    registration_form(
        $username,
        $password,
        $email,
        $website,
        $first_name,
        $last_name,
        $nickname,
        $bio
        );
}
function registration_form( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {

    echo '
Form Pendaftaran:
Username
<br/>
Password
<br/>
Email
<br/>
Website
<br/>
First Name
<br/>
Last Name
<br/>
Nickname
<br/>
About / Bio ' . (isset($_POST['bio']) ? $bio : null) . '
<br/> <input class="btn btn-primary btn-lg" type="submit" name="submit" value="Register"/> </form> </div> </div> '; } function registration_validation( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) { global $reg_errors; $reg_errors = new WP_Error; if ( empty( $username ) || empty( $password ) || empty( $email ) ) { $reg_errors->add('field', 'Required form field is missing'); } if ( strlen( $username ) < 4 ) { $reg_errors->add('username_length', 'Username too short. At least 4 characters is required'); } if ( username_exists( $username ) ) $reg_errors->add('user_name', 'Sorry, that username already exists!'); if ( !validate_username( $username ) ) { $reg_errors->add('username_invalid', 'Sorry, the username you entered is not valid'); } if ( strlen( $password ) < 5 ) { $reg_errors->add('password', 'Password length must be greater than 5'); } if ( !is_email( $email ) ) { $reg_errors->add('email_invalid', 'Email is not valid'); } if ( email_exists( $email ) ) { $reg_errors->add('email', 'Email Already in use'); } if ( !empty( $website ) ) { if ( !filter_var($website, FILTER_VALIDATE_URL) ) { $reg_errors->add('website', 'Website is not a valid URL'); } } if ( is_wp_error( $reg_errors ) ) { foreach ( $reg_errors->get_error_messages() as $error ) { echo ''; } } } function complete_registration() { global $reg_errors, $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio; if ( count($reg_errors->get_error_messages()) < 1 ) { $userdata = array( 'user_login' => $username, 'user_email' => $email, 'user_pass' => $password, 'user_url' => $website, 'first_name' => $first_name, 'last_name' => $last_name, 'nickname' => $nickname, 'description' => $bio, ); $user = wp_insert_user( $userdata ); echo 'Registration complete. Goto <a href="' . get_site_url() . '/wp-login.php">login page</a>.'; } } // Register a new shortcode: [cr_custom_registration] add_shortcode('cr_custom_registration', 'custom_registration_shortcode');

dan tampilan code yang dapat dimodifikasi sekaligus kode html yang dapat diubah adalah :

Form Pendaftaran:
Username
<br/>
Password
<br/>
Email
<br/>
Website
<br/>
First Name
<br/>
Last Name
<br/>
Nickname
<br/>
About / Bio ' . (isset($_POST['bio']) ? $bio : null) . '
<br/> <input class="btn btn-primary btn-lg" type="submit" name="submit" value="Register"/> </form> </div> </div>

Kode ini sudah terintegrasi dengan framework bootstrap, jadi jika kalian menggunakan framework bootstrap maka kalian tidak perlu lagi mengubah-ubah kodenya namun jika dirasa kurang maka kalian dapat mengubahnya.

Membuat template halaman register

Membuat template halaman register memang sangat diperlukan karena pengguna yang telah terdaftar dan sudah login kedalam wordpress masih dapat melakukan register dan alasan lainnya untuk mengimplementasikan halaman register dibutuhkan shortcode cr_custom_registration yang digunakan untuk memanggil form register.

Pertama-tama buatlah file direktori theme masing-masing contohnya seperti /dir_wp/wp-content/themes/namatheme/ dengan nama file template-register.php. lalu copy paste file template.php atau yang mirip seperti template-register.php, setelah itu replace code <?php the_content(); ?> dengan code ini.

<?php
    if ( is_user_logged_in() ) {
        echo '' ;
    }
    else {
        echo the_content();
    }
?>

Penjelasan kode :

fungsi kode if (is_user_logged_in () digunakan untuk menentukan jika pengguna login maka konten tidak akan ditampilkan dan terdapat peringatan Anda sudah terdaftar, namun jika pengguna belum login ke dalam wordpress maka halaman tersebut akan menampilkan form register.

Buat laman baru

Jika telah selesai maka kalian dapat menggunakan shorcode [cr_custom_registration] dan menggunakan opsi template-register untuk mengimplementasikan halaman pendaftaran.

Silahkan save dan lihat pembaruan yang telah kalian buat, untuk masalah pembuatan template halaman kalian dapat melihat caranya pada situs codex wordpress pada bagian Page Templates. jika kalian ingin bertanya kalian dapat mengomentari artikel ini.