ฉันจะเพิ่มฟิลด์ในโปรไฟล์ผู้ใช้ได้อย่างไร ตัวอย่างเช่นประเทศอายุเป็นต้น


21

ฉันไม่ค่อยดีกับคอมพิวเตอร์ / รหัส ฯลฯ ฉันใช้ปลั๊กอินที่ทำให้แบบฟอร์มการลงทะเบียนน่าเบื่อและในรูปแบบนั้นฉันได้เพิ่มประเทศกลุ่มอายุเพศและอื่น ๆ ฉันคลิกตัวเลือกที่จะเพิ่มผู้ลงทะเบียนลงในผู้ใช้ wordpress thingy แต่เมื่อฉันลองใช้จะมีเพียงชื่อผู้ใช้และอีเมลแสดงในส่วนผู้ใช้ในส่วนแบ็กเอนด์ .. มีวิธีให้ฟิลด์อื่นแสดงในส่วนผู้ใช้หรือไม่

ฉันต้องการให้พวกเขาแสดงเพื่อใช้ในเชิงสถิติ


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
นี่ไม่ได้จัดเก็บข้อมูลจากเขตข้อมูลพิเศษของฉันในฐานข้อมูล ข้อเสนอแนะโปรด? ขอบคุณ.
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

ขั้นสูงฟิลด์ที่กำหนดเอง Proปลั๊กอินจะช่วยให้คุณสามารถเพิ่มเขตข้อมูลไปยังโปรไฟล์ของผู้ใช้โดยไม่ต้องมีการเข้ารหัส



มีวิธีทำฟรีด้วย PHP
Johan Pretorius

ใช่ - เป็นไปได้ที่จะเขียนโค้ดนี้ใน PHP โดยไม่ต้องใช้ ACF หากคุณต้องการ ประสบการณ์ของฉันคือการใช้โค้ดมากกว่า 100 บรรทัดและคุณต้องกังวลเกี่ยวกับการยืนยันแบบไม่มีการเขียน HTML ของแบบฟอร์ม ฯลฯ อาจใช้เวลาสองสามชั่วโมงในการเข้ารหัสกับ 5-10 นาทีของการตั้งค่าใน ACF อาจขึ้นอยู่กับว่าคุณใช้ ACF Pro อยู่แล้วในโครงการ
squarecandy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.