사용자 프로파일에서 필드를 추가하려면 어떻게합니까? 예를 들어, 국가, 연령 등


21

나는 컴퓨터 / 코드 등에별로 좋지 않습니다. 등록 양식을 만드는 플러그인을 사용하고 그 형태로 국가, 연령 그룹, 성별 등을 추가했습니다. 워드 프레스 사용자에게 등록기를 추가하는 옵션을 클릭합니다. 그러나 시도하면 백엔드의 사용자 섹션에 사용자 이름과 이메일 만 표시됩니다. 다른 필드가 사용자 섹션에 표시 될 수있는 방법이 있습니까?

통계 용도로 보여줄 필요가 있습니다.


5
우리의 검색을 시도하십시오. 수십 가지 예를 찾을 수 있습니다.
fuxia

답변:


58

당신은 사용할 필요가 show_user_profile, edit_user_profile, personal_options_update, 그리고 edit_user_profile_update후크.

사용자 섹션에서 추가 필드를 추가하기 위해 다음 코드를 사용할 수 있습니다.

사용자 편집 섹션에서 추가 필드를 추가하기위한 코드 :

add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );

function extra_user_profile_fields( $user ) { ?>
    <h3><?php _e("Extra profile information", "blank"); ?></h3>

    <table class="form-table">
    <tr>
        <th><label for="address"><?php _e("Address"); ?></label></th>
        <td>
            <input type="text" name="address" id="address" value="<?php echo esc_attr( get_the_author_meta( 'address', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your address."); ?></span>
        </td>
    </tr>
    <tr>
        <th><label for="city"><?php _e("City"); ?></label></th>
        <td>
            <input type="text" name="city" id="city" value="<?php echo esc_attr( get_the_author_meta( 'city', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your city."); ?></span>
        </td>
    </tr>
    <tr>
    <th><label for="postalcode"><?php _e("Postal Code"); ?></label></th>
        <td>
            <input type="text" name="postalcode" id="postalcode" value="<?php echo esc_attr( get_the_author_meta( 'postalcode', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your postal code."); ?></span>
        </td>
    </tr>
    </table>
<?php }

데이터베이스에 추가 필드 세부 사항을 저장하기위한 코드 :

add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );

function save_extra_user_profile_fields( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) ) { 
        return false; 
    }
    update_user_meta( $user_id, 'address', $_POST['address'] );
    update_user_meta( $user_id, 'city', $_POST['city'] );
    update_user_meta( $user_id, 'postalcode', $_POST['postalcode'] );
}

이 주제에 유용한 몇 가지 블로그 게시물이 있습니다.


브라보 이것은 훌륭하게 작동합니다.
AVEbrahimi

1
이것은 DB의 추가 필드의 데이터를 저장하지 않습니다. 제안하세요? 고마워.
b_dubb

@b_dubb, 코드를 공유 할 수 있습니까? 확인하고 알려 드리겠습니다.
Arpita Hunka

문제를 해결했지만 문의 해 주셔서 감사합니다.
b_dubb

3

get_user_meta대신에 더 나은 방법을 사용하십시오 get_the_author_meta.

function extra_user_profile_fields( $user ) {
    $meta = get_user_meta($user->ID, 'meta_key_name', false);
}

3

고급 사용자 정의 필드 프로 플러그인은 어떤 코딩없이 사용자 프로파일에 필드를 추가 할 수 있습니다.


3
프로 버전 만
나는

PHP로 이것을하는 무료 방법이 있습니다.
Johan Pretorius

그렇습니다-원한다면 ACF없이 PHP로 이것을 코딩하는 것이 가능합니다. 내 경험은 100 줄 이상의 코드가 필요하며 nonce 검증, 양식의 HTML 작성 등에 대해 걱정할 필요가 있다는 것입니다. ACF에서 5-10 분의 설정에 대해 코딩하는 데 몇 시간이 걸릴 수 있습니다. 이미 프로젝트에서 ACF Pro를 사용하고 있는지에 따라 다릅니다.
squarecandy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.