मैं उपयोगकर्ता प्रोफ़ाइल पर फ़ील्ड कैसे जोड़ूं? उदाहरण के लिए, देश, आयु आदि


21

मैं कंप्यूटर / कोड आदि के साथ बहुत अच्छा नहीं हूं। मैं एक ऐसे प्लगइन का उपयोग करता हूं जो पंजीकरण फॉर्म को महत्वपूर्ण बनाता है और उस रूप में मैंने देश, आयु वर्ग, लिंग और इतने पर जोड़ा। मैं उस विकल्प पर क्लिक करता हूं जो वर्डप्रेस उपयोगकर्ता चीज़ में रजिस्टरर को जोड़ देगा। लेकिन जब मैं इसे आज़माता हूं, तो बैकएंड पर केवल यूज़र सेक्शन पर उपयोगकर्ता नाम और ईमेल शो .. क्या अन्य क्षेत्रों के लिए उपयोगकर्ता अनुभाग पर दिखाने का कोई तरीका है?

मुझे उन्हें सांख्यिकीय उपयोग के लिए दिखाने की आवश्यकता है।


5
कृपया हमारी खोज का प्रयास करें। आपको दर्जनों उदाहरण मिल जाएंगे।
FUXIA

जवाबों:


59

आप उपयोग करने की आवश्यकता 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, क्या आप कृपया अपना कोड साझा कर सकते हैं? तो मैं जाँच करूँगा और आपको बता दूँगा।
अर्पिता हुनका

मैंने अपना मसला हल कर लिया है लेकिन इस तक पहुंचने के लिए धन्यवाद।
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 के साथ ऐसा करने के मुफ्त तरीके हैं।
जोहान प्रिटोरियस

हां - यदि आप चाहें तो ACF के बिना PHP में इसे कोड करना निश्चित रूप से संभव है। मेरा अनुभव यह है कि इसमें कोड की 100+ लाइनें लगती हैं और आपको नॉन वेरिफिकेशन के बारे में चिंता करने की ज़रूरत होती है, फॉर्म का HTML लिखना आदि ACF में सेटअप के बनाम 5-10 मिनट की कोडिंग के कुछ घंटे लग सकते हैं। शायद इस बात पर निर्भर करता है कि आप किसी प्रोजेक्ट पर पहले से ही ACF Pro का उपयोग कर रहे हैं।
चौकोर कैंडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.