Wordpress 사용자 지정 등록 양식
커스텀 등록 양식이 필요한 고객이 있습니다.
- 이 페이지에서 커스텀 디자인을 해야 합니다.
- 이름, 회사, 전화 등의 커스텀 필드를 추가해야 합니다.
누가 나 좀 도와줄래?
WordPress에 대한 질문은 WordPress Answers에서 하는 것이 좋습니다.어쨌든 플러그인 없이 이 문제를 해결하려면 다음 세 가지가 필요합니다.
다음 세 가지 부분이 있으면 페이지 템플리트에서 다음 작업을 수행할 수 있습니다.
<?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
'programing' 카테고리의 다른 글
.save()와 update()의 Mongoose 차이 (0) | 2023.03.17 |
---|---|
릴레이를 사용할 때 로컬 상태를 어떻게 처리합니까? (0) | 2023.03.17 |
JSON 데이터를 javascript에 구문 분석 없이 동기적으로 포함하려면 어떻게 해야 합니까? (0) | 2023.03.17 |
ReactJs, 같은 파라미터로 setState를 호출한다. (0) | 2023.03.17 |
Ajax 제출 전 jQuery 양식 검증 (0) | 2023.03.17 |