Làm cách nào để thêm trường vào hồ sơ Người dùng? Ví dụ: quốc gia, tuổi, v.v.


21

Tôi không rành lắm về máy tính / mã, v.v. Tôi sử dụng một plugin làm cho biểu mẫu đăng ký trở nên thú vị và ở dạng đó tôi đã thêm quốc gia, nhóm tuổi, giới tính, v.v. Tôi bấm vào tùy chọn sẽ thêm người đăng ký vào điều người dùng wordpress. Nhưng khi tôi dùng thử, chỉ có tên người dùng và email hiển thị trên phần Người dùng trên phần phụ trợ .. Có cách nào để các trường khác hiển thị trên phần người dùng không?

Tôi cần chúng để hiển thị cho sử dụng thống kê.


5
Hãy thử tìm kiếm của chúng tôi. Bạn sẽ tìm thấy hàng tá ví dụ.
fuxia

Câu trả lời:


57

Bạn cần phải sử dụng show_user_profile, edit_user_profile, personal_options_update, và edit_user_profile_updatemóc.

Bạn có thể sử dụng mã sau để thêm các trường bổ sung trong phần Người dùng

Mã để thêm các trường bổ sung trong Chỉnh sửa phần người dùng:

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 }

Mã để lưu các chi tiết trường bổ sung trong cơ sở dữ liệu :

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'] );
}

Ngoài ra còn có một số bài đăng blog có sẵn về chủ đề có thể hữu ích:


Bravo này hoạt động tuyệt vời.
AVEbrahimi

1
Đây không phải là lưu trữ dữ liệu từ các trường bổ sung của tôi trong DB. Xin gợi ý? Cám ơn.
b_dubb

@b_dubb, bạn có thể vui lòng chia sẻ mã của mình không? Vì vậy, tôi sẽ kiểm tra và cho bạn biết.
Arpita Hunka

Tôi đã giải quyết vấn đề của mình nhưng cảm ơn vì đã tiếp cận.
b_dubb

3

Bạn nên sử dụng tốt hơn get_user_meta(thay vì get_the_author_meta):

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

3

Các chi tiết Tuỳ chỉnh Fields Pro plugin sẽ cho phép bạn thêm các trường để hồ sơ người dùng mà không cần bất kỳ mã hóa.


3
Chỉ có phiên bản pro
Tôi là người ngu ngốc nhất

Có nhiều cách miễn phí để làm điều này với PHP.
Johan Pretorius

Đúng - chắc chắn có thể mã này trong PHP mà không cần ACF nếu bạn thích. Kinh nghiệm của tôi là phải mất hơn 100 dòng mã và bạn cần lo lắng về việc xác minh nonce, viết HTML của biểu mẫu, v.v. Có thể mất vài giờ mã hóa so với 5-10 phút thiết lập trong ACF. Có lẽ phụ thuộc vào việc bạn đang sử dụng ACF Pro trên một dự án.
squarecandy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.