programing

Wordpress 사용자 지정 등록 양식

batch 2023. 3. 17. 19:42
반응형

Wordpress 사용자 지정 등록 양식

커스텀 등록 양식이 필요한 고객이 있습니다.

  • 이 페이지에서 커스텀 디자인을 해야 합니다.
  • 이름, 회사, 전화 등의 커스텀 필드를 추가해야 합니다.

누가 나 좀 도와줄래?

WordPress에 대한 질문은 WordPress Answers에서 하는 것이 좋습니다.어쨌든 플러그인 없이 이 문제를 해결하려면 다음 세 가지가 필요합니다.

  1. 사용자 정의 WordPress 테마
  2. 페이지 템플릿
  3. 페이지 템플릿을 사용하는 WordPress 페이지

다음 세 가지 부분이 있으면 페이지 템플리트에서 다음 작업을 수행할 수 있습니다.

<?php
/*
Template Name: Registration
*/

global $current_user;
wp_get_current_user();

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$company = $_POST['company'];

if (($firstname != '') && ($lastname != '') && ($company != '')) {
    // TODO: Do more rigorous validation on the submitted data

    // TODO: Generate a better login (or ask the user for it)
    $login = $firstname . $lastname;

    // TODO: Generate a better password (or ask the user for it)
    $password = '123';

    // TODO: Ask the user for an e-mail address
    $email = 'test@example.com';

    // Create the WordPress User object with the basic required information
    $user_id = wp_create_user($login, $password, $email);

    if (!$user_id || is_wp_error($user_id)) {
        // TODO: Display an error message and don't proceed.
    }
    
    $userinfo = array(
        'ID' => $user_id,
        'first_name' => $firstname,
        'last_name' => $lastname,
    );

    // Update the WordPress User object with first and last name.
    wp_update_user($userinfo);

    // Add the company as user metadata
    update_usermeta($user_id, 'company', $company);
}

if (is_user_logged_in()) : ?>

    <p>You're already logged in and have no need to create a user profile.</p>
    
<?php else : while (have_posts()) : the_post(); ?>

<div id="page-<?php the_ID(); ?>">
    <h2><?php the_title(); ?></h2>

    <div class="content">
        <?php the_content() ?>
    </div>

    <form action="<?php echo $_SERVER['REQUEST_URI'] ?>" method="post">
        <div class="firstname">
            <label for="firstname">First name:</label>
            <input name="firstname"
                    id="firstname"
                    value="<?php echo esc_attr($firstname) ?>">
        </div>
        <div class="lastname">
            <label for="lastname">Last name:</label>
            <input name="lastname"
                    id="lastname"
                    value="<?php echo esc_attr($lastname) ?>">
            </div>
            <div class="company">
            <label for="company">Company:</label>
            <input name="company"
                    id="company"
                    value="<?php echo esc_attr($company) ?>">
            </div>
    </form>
</div>
    
<?php endwhile; endif; ?>

저장한 정보를 가져오려면 정보가 사용자 개체 자체 또는 메타데이터에 있는지 알아야 합니다.(로그인한 사용자의) 이름과 성을 검색하려면:

global $current_user;
$firstname = $current_user->first_name;
$lastname = $current_user->last_name;

(로그인한 사용자의) 회사명을 취득하려면:

global $current_user;
$company = get_usermeta($current_user->id, 'company');

그것이 그것의 기본적인 요지입니다.여기에는 검증, 오류 메시지 출력, WordPress API 내에서 발생하는 오류 처리 등 아직 부족한 부분이 많습니다.코드가 작동하기 전에 처리해야 할 몇 가지 중요한 TODO도 있습니다.코드도 여러 개의 파일로 분할되어 있을 것입니다만, 이것으로 충분히 개시할 수 있으면 좋겠다고 생각합니다.

커스텀 등록 폼을 사용하는 장점은 사용자의 요구에 따라 코드를 쉽게 수정할 수 있다는 것입니다.에서는, 「」, 「Wordpress」등의 할 수 .template_redirect그런 다음 해당 후크를 폼의 후처리를 수행하는 기능에 매핑합니다(예: 검증 및 사이트 데이터베이스에 데이터 제출).자세한 기사는 이쪽에서 참조할 수 있습니다.

<div class="employee">
<input type="hidden" name="show_msg">

<form name="customer_details" method="POST" required="required" class="input-hidden">
Your Name: <input type="text" id="name" name="customer_name">
Your Email: <input type="text" id="email" name="customer_email">
Company: <input type="text" id="company" name="company">
Sex: <input type="radio" name="customer_sex" value="male">Male <input type="radio" name="customer_sex" value="female">Female
<textarea id="post" name="experience" placeholder="Write something.." style="height:400px;width:100%"></textarea>
<input type="submit" value="Submit">
<!--?php wp_nonce_field( 'wpshout-frontend-post','form-submit' ); ?-->
</form></div>

PHP 함수

function wpshout_frontend_post() {
    wpshout_save_post_if_submitted();
}
add_action('template_redirect','wpshout_frontend_post', 2);

커스텀 WordPress 등록 양식에는 표준 양식보다 크게 두 가지 이점이 있습니다.첫 번째는 웹사이트 테마의 전체적인 모양과 느낌과의 통합입니다.표준 폼은 커스텀테마에서 잘 동작하지 않는 경우가 많아 커스텀 CSS 파일이 폼에서 잘 표시되지 않을 가능성이 항상 있습니다.한편, 커스텀 폼은 커스텀 CSS와 연동하도록 간단하게 설정할 수 있습니다.

사용자 정의 등록 양식을 사용하는 두 번째 일반적인 이유는 표준 양식에 포함되지 않은 사용자 정의 필드 옵션입니다.작은 커스텀 등록 폼으로 처리속도가 향상되어 깔끔한 인터페이스로부터 필요한 모든 데이터가 수집됩니다.

function wordpress_custom_registration_form( $first_name, $last_name, $username, $password, $email) {
    global $username, $password, $email, $first_name, $last_name;
   echo '
    <form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
   First Name :
    <input type="text" name="fname" value="' . ( isset( $_POST['fname']) ? $first_name : null ) . '">
    Last Name:
    <input type="text" name="lname" value="' . ( isset( $_POST['lname']) ? $last_name : null ) . '">
    Username <strong>*</strong>
    <input type="text" name="username" value="' . ( isset( $_POST['username'] ) ? $username : null ) . '">
    Password <strong>*</strong>
    <input type="password" name="password" value="' . ( isset( $_POST['password'] ) ? $password : null ) . '">
    Email: <strong>*</strong>
    <input type="text" name="email" value="' . ( isset( $_POST['email']) ? $email : null ) . '">
   <input type="submit" name="submit" value="Register"/>
    </form>
    ';
}

이 폼은 쇼트코드 [wp_registration_form]를 사용하여 어디에나 삽입할 수 있습니다.쇼트 코드를 설정하기 위한 코드 스니펫을 다음에 나타냅니다.

function wp_custom_shortcode_registration() {
    ob_start();
    wordpress_custom_registration_form_function();
    return ob_get_clean();
}

WordPress 커스텀 등록 폼을 작성하는 방법을 알고 계시기를 바랍니다.그래도 혼동이 있으면 커스텀 WordPress 등록 양식 작성을 확인하십시오.

언급URL : https://stackoverflow.com/questions/7595821/wordpress-custom-registration-form

반응형