양식에서 사용자 입력 가져 오기
-
-
안녕하세요 @William,귀하의 질문은 WordPress에만 국한되지 않고 일반적인 PHP 지식이기 때문에 약간 광범위합니다.먼저 HTML 및 PHP 폼 빌딩을 확인하십시오. 나중에`wp_update_user ($ user)`함수를 사용하여이를 수행 할 수 있습니다.Hi @William, your question is a bit broad as it is not really WordPress specific, but also general PHP knowledge. Please check the HTML & PHP formbuilding first - afterwards you can use the `wp_update_user($user)` function to achieve that.
- 0
- 2012-12-11
- fischi
-
1 대답
- 투표
-
- 2012-12-11
wp-admin/admin-post.php
를 폼 액션 핸들러로 사용하고 커스텀 함수를 콜백으로 바인딩하세요.이메일 업데이트의 간단한 예입니다. 여기서는
[userform]
이라는 단축 코드를 사용하지만 템플릿도 사용할 수 있습니다.add_shortcode ( 'userform','wpse_75723_userform'); add_action ( 'admin_post_update_user_email','wpse_75723_update'); /** * 양식을 만듭니다. */ 함수 wpse_75723_userform () { $ here=esc_url (home_url ($ _SERVER [ 'REQUEST_URI'])); if (!is_user_logged_in ()) return 'You haveto & lt; a href="'. wp_login_url ($ here). '"> 로그인 & lt;/a > 이 페이지를 사용합니다. '; $ action=admin_url ( 'admin-post.php'); $ user_id=get_current_user_id (); return "& lt;formmethod='post'action='$ action'> & lt;inputtype='hidden'name='action'value='update_user_email'> & lt;inputtype='hidden'name='redirect'value='$ here'> & lt;inputtype='hidden'name='user_id'value='$ user_id'> & lt; 입력 유형='이메일'이름='이메일'크기='15'> & lt; 입력 유형='제출'> & lt;/양식 > "; } /** * 사용자 이메일 업데이트 */ 함수 wpse_75723_update () { if (!isset ($ _POST [ 'user_id'])) die ( 'ID 없음'); $ user_id=absint ($ _POST [ 'user_id']); if (! current_user_can ( 'edit_user',$ user_id)) die ( '허용되지 않음'); if (!isset ($ _POST [ 'email'])) die ( '이메일 없음'); if (!is_email ($ _POST [ 'email'])) die ( '잘못된 이메일'); $ user=get_userdata ($ user_id); if (비어 있음 ($ user- > user_login)) die ( '사용자 거부 됨'); 글로벌 $ wpdb; $ wpdb- > query ( $ wpdb- > 준비 ( "{$ wpdb- > users} SET user_email=% s WHERE user_login=% s 업데이트", $ _POST [ '이메일'], $ user- > user_login ) ); $ location=isset ($ _POST [ 'redirect']) ? urldecode ($ _POST [ '리디렉션']) : home_url ( '/'); wp_redirect ($ 위치,303); 출구; }
삽입 중…
<사전> <코드> [사용자 양식]… 페이지에 삽입하면 기본 양식이 생성됩니다.
<인용구>사용자는 여기에서 이메일 주소를 변경할 수 있습니다.
사용 가능한 변수와 저장 위치를 이해하려면 다음 파일을 참조하십시오.
-
wp-admin/user-edit.php
-
wp-admin/includes/user.php
및 -
wp-includes/user.php
일반 SQL 쿼리를 보내려는 경우
users
및user_meta code> 테이블도 살펴볼 가치가 있습니다.
Use
wp-admin/admin-post.php
as form action handler, and bind your custom function as callback to that.A simple example for email updates. We will use a shortcode named
[userform]
here, but you can use a template too.add_shortcode( 'userform', 'wpse_75723_userform' ); add_action( 'admin_post_update_user_email', 'wpse_75723_update' ); /** * Create the form. */ function wpse_75723_userform() { $here = esc_url( home_url( $_SERVER['REQUEST_URI'] ) ); if ( ! is_user_logged_in() ) return 'You have to <a href="' . wp_login_url( $here ) . '">log in</a> to use this page.'; $action = admin_url( 'admin-post.php'); $user_id = get_current_user_id(); return "<form method='post' action='$action'> <input type='hidden' name='action' value='update_user_email'> <input type='hidden' name='redirect' value='$here'> <input type='hidden' name='user_id' value='$user_id'> <input type='email' name='email' size='15'> <input type='submit'> </form>"; } /** * Update user email */ function wpse_75723_update() { if ( ! isset ( $_POST['user_id'] ) ) die( 'no id' ); $user_id = absint( $_POST['user_id'] ); if ( ! current_user_can( 'edit_user', $user_id ) ) die( 'not allowed' ); if ( ! isset ( $_POST['email'] ) ) die( 'no email' ); if ( ! is_email( $_POST['email'] ) ) die( 'invalid email' ); $user = get_userdata( $user_id ); if ( empty ( $user->user_login ) ) die( 'user denied' ); global $wpdb; $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->users} SET user_email = %s WHERE user_login = %s", $_POST['email'], $user->user_login ) ); $location = isset ( $_POST['redirect'] ) ? urldecode( $_POST['redirect'] ) : home_url( '/' ); wp_redirect( $location, 303 ); exit; }
Inserting …
[userform]
… into a page will produce a basic form:
The user can change her/his email address here.
To understand what variables are available and where they are stored look at these files:
wp-admin/user-edit.php
wp-admin/includes/user.php
andwp-includes/user.php
The tables
users
anduser_meta
are worth a look too if you want to send plain SQL queries.-
이 후크 'admin_post_update_user_email'을 어디에서도 찾을 수 없습니다.어디서 얻습니까?I can't find this hook 'admin_post_update_user_email' anywhere. Where do you get it from?
- 0
- 2013-09-21
- Ari
-
@AriSusanto`admin_post_`와`
`의 값의 조합입니다. @AriSusanto This is a combination of `admin_post_` and the value of ``.- 0
- 2013-09-21
- fuxia
-
사용자 웹 사이트 등과 같은 다른 작업 입력 필드를 추가하는 방법은 무엇입니까?How to add another working input fields to it such as user's website etc?
- 0
- 2013-09-21
- Ari
-
`wpse_75723_userform ()`에 쓰고`wpse_75723_update ()`에서 읽으면됩니다.이 질문을 이해하지 못합니다.Just write it into `wpse_75723_userform()` and read it in `wpse_75723_update()`. I don’t understand this question.
- 0
- 2013-09-21
- fuxia
-
예,단순히 작동합니다.추가 사용자 프로필 입력 필드를 업데이트하려면`wp_update_user`를 사용합니다.Yes, it is simply working. I use `wp_update_user` to update additional user profile input field.
- 0
- 2013-09-22
- Ari
사용자가 프런트 엔드에서 정보를 업데이트 할 수있는 양식을 만들려고합니다. 저는 PHP를 배우기 시작했습니다 (C #을 아주 잘 알고 있습니다). 이 코드를 사용하여 WordPress 페이지에서 양식을 만드는 경우 사용자가 '업데이트'버튼을 누른 다음 데이터베이스를 업데이트 할 때 어떻게 정보를 얻나요?