วิธีการเพิ่มฟิลด์แบบฟอร์มที่กำหนดเองไปยังหน้าโปรไฟล์ผู้ใช้


29

หน้าโปรไฟล์ผู้ใช้มีฟิลด์ต่อไปนี้:

ชื่อผู้ใช้
ชื่อ
นามสกุล
ชื่อเล่นชื่อที่ติดต่อข้อมูลอีเมลเว็บไซต์ AIM Yahoo IM
Jabber / Google Talk

สามารถเพิ่มฟิลด์เพิ่มเติมลงในส่วนนี้ได้อย่างไร ฟิลด์เช่นหมายเลขโทรศัพท์ที่อยู่หรือสิ่งอื่นใด

คำตอบ:


37

คุณจำเป็นต้องใช้'show_user_profile', 'edit_user_profile', 'personal_options_update'และ'edit_user_profile_update'ตะขอ

นี่คือรหัสเพื่อเพิ่มหมายเลขโทรศัพท์ :

add_action( 'show_user_profile', 'yoursite_extra_user_profile_fields' );
add_action( 'edit_user_profile', 'yoursite_extra_user_profile_fields' );
function yoursite_extra_user_profile_fields( $user ) {
?>
  <h3><?php _e("Extra profile information", "blank"); ?></h3>
  <table class="form-table">
    <tr>
      <th><label for="phone"><?php _e("Phone"); ?></label></th>
      <td>
        <input type="text" name="phone" id="phone" class="regular-text" 
            value="<?php echo esc_attr( get_the_author_meta( 'phone', $user->ID ) ); ?>" /><br />
        <span class="description"><?php _e("Please enter your phone."); ?></span>
    </td>
    </tr>
  </table>
<?php
}

add_action( 'personal_options_update', 'yoursite_save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'yoursite_save_extra_user_profile_fields' );
function yoursite_save_extra_user_profile_fields( $user_id ) {
  $saved = false;
  if ( current_user_can( 'edit_user', $user_id ) ) {
    update_user_meta( $user_id, 'phone', $_POST['phone'] );
    $saved = true;
  }
  return true;
}

รหัสนั้นจะเพิ่มเขตข้อมูลไปยังหน้าจอผู้ใช้ของคุณที่มีลักษณะดังนี้:

นอกจากนี้ยังมีบล็อกโพสต์หลายหัวข้อที่อาจเป็นประโยชน์:

หรือถ้าคุณไม่ต้องการสะสมตัวเองมีปลั๊กอินที่เพิ่มคุณสมบัติดังกล่าวดังต่อไปนี้(แม้ว่าฉันแน่ใจว่ามีคนอื่น):


ไมค์ฉันเจอปัญหามากมายรับการดัดแปลงเพื่อบันทึก ในที่สุดฉันก็จับมันเมื่อฉันทำ "ค้นหาและแทนที่" เสร็จสมบูรณ์ สำหรับการอ้างอิงในอนาคตของฉันฟิลด์ "ชื่อ" และ "ชื่อ" จำเป็นต้องตรงกันหรือไม่
Jonathan Wold

@Jonathan Wold - ช่อง "ชื่อ" และ "ชื่อเรื่อง" จำเป็นต้องตรงกันหรือไม่ " คุณไม่ได้ให้บริบทแก่ฉันเพียงพอที่ฉันจะรู้วิธีแอสเวิร์ต และคุณอาจต้องการที่จะสร้างคำถามใหม่ที่สมบูรณ์
MikeSchinkel

1
@MikeSchinkel Cimy User Extra Fields ไม่มีคำแนะนำที่ดี ฝ่ายสนับสนุนไม่ได้อยู่ที่นั่นจริงๆและรหัสคือ ... หืมมม
ไกเซอร์

8
// remove aim, jabber, yim 
function hide_profile_fields( $contactmethods ) {
    unset($contactmethods['aim']);
    unset($contactmethods['jabber']);
    unset($contactmethods['yim']);
    return $contactmethods;
}

// add anything else
function my_new_contactmethods( $contactmethods ) {
    //add Birthday
    $contactmethods['birthday'] = 'Birthday';
    //add Address
    $contactmethods['address'] = 'Address';
    //add City
    $contactmethods['city'] = 'City';
    //add State
    $contactmethods['state'] = 'State';
    //add Postcode
    $contactmethods['postcode'] = 'Postcode';
    //add Phone
    $contactmethods['phone'] = 'Phone';
    //add Mobilphone
    $contactmethods['mphone'] = 'Mobilphone';

    return $contactmethods;
}
add_filter('user_contactmethods','my_new_contactmethods',10,1);
add_filter('user_contactmethods','hide_profile_fields',10,1);

หวังว่านี่จะช่วยได้

ที่มา: WPBeginner

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.