ড্যাশবোর্ডে "নতুন ব্যবহারকারী যুক্ত করুন" স্ক্রিনে ক্ষেত্রগুলি যুক্ত করা


13

আমি অ্যাডমিন প্যানেলে নতুন নতুন ব্যবহারকারী পৃষ্ঠায় "কোম্পানির নাম" ক্ষেত্রটি যুক্ত করতে চাই। আমি বেশ কিছুটা অনুসন্ধান করেছি এবং কীভাবে এটি করা যায় তার বিশদ খুঁজে পেতে ব্যর্থ হয়েছি। আমি সহজেই প্রোফাইল পৃষ্ঠায় এবং নিবন্ধকরণের সাথে তথ্য যুক্ত করতে পারি ..

   function my_custom_userfields( $contactmethods ) {
    //Adds customer contact details
    $contactmethods['company_name'] = 'Company Name';
    return $contactmethods;
   }
   add_filter('user_contactmethods','my_custom_userfields',10,1);

তবে অন্য কিছুতে ডাইস নেই।


এই বৈশিষ্ট্যটি প্রয়োগ করতে আপনি এসিএফ (অ্যাডভান্সড কাস্টম ফিল্ডস) প্লাগইন ব্যবহার করতে পারেন ।
লিনিশ

উত্তর:


17

user_new_form হুক কি এখানে যাদু করতে পারে।

function custom_user_profile_fields($user){
  ?>
    <h3>Extra profile information</h3>
    <table class="form-table">
        <tr>
            <th><label for="company">Company Name</label></th>
            <td>
                <input type="text" class="regular-text" name="company" value="<?php echo esc_attr( get_the_author_meta( 'company', $user->ID ) ); ?>" id="company" /><br />
                <span class="description">Where are you?</span>
            </td>
        </tr>
    </table>
  <?php
}
add_action( 'show_user_profile', 'custom_user_profile_fields' );
add_action( 'edit_user_profile', 'custom_user_profile_fields' );
add_action( "user_new_form", "custom_user_profile_fields" );

function save_custom_user_profile_fields($user_id){
    # again do this only if you can
    if(!current_user_can('manage_options'))
        return false;

    # save my custom field
    update_usermeta($user_id, 'company', $_POST['company']);
}
add_action('user_register', 'save_custom_user_profile_fields');
add_action('profile_update', 'save_custom_user_profile_fields');

আরো বিস্তারিত জানার জন্য আমার ব্লগ পোস্ট যান: http://scriptbaker.com/adding-custom-fields-to-wordpress-user-profile-and-add-new-user-page/


13

আমার একই চাহিদা ছিল এবং নিম্নলিখিত হ্যাক তৈরি করেছি:

<?php
function hack_add_custom_user_profile_fields(){
    global $pagenow;

    # do this only in page user-new.php
    if($pagenow !== 'user-new.php')
        return;

    # do this only if you can
    if(!current_user_can('manage_options'))
        return false;

?>
<table id="table_my_custom_field" style="display:none;">
<!-- My Custom Code { -->
    <tr>
        <th><label for="my_custom_field">My Custom Field</label></th>
        <td><input type="text" name="my_custom_field" id="my_custom_field" /></td>
    </tr>
<!-- } -->
</table>
<script>
jQuery(function($){
    //Move my HTML code below user's role
    $('#table_my_custom_field tr').insertAfter($('#role').parentsUntil('tr').parent());
});
</script>
<?php
}
add_action('admin_footer_text', 'hack_add_custom_user_profile_fields');


function save_custom_user_profile_fields($user_id){
    # again do this only if you can
    if(!current_user_can('manage_options'))
        return false;

    # save my custom field
    update_usermeta($user_id, 'my_custom_field', $_POST['my_custom_field']);
}
add_action('user_register', 'save_custom_user_profile_fields');

3
এখন আমরা আপনার ব্যাখ্যার জন্য অপেক্ষা করছি।
ফুসিয়া

আমি ব্যবহারকারী-new.php ফাইলটিতে উত্স কোডটি দেখেছি এবং "অ্যাড_উজার_প্রফাইলে" এর মতো অ্যাকশন হুক নেই তাই আমি এটি "অ্যাডমিন_ফুটার_টেক্সট" ক্রিয়াটি দিয়ে অনুকরণ করি এবং $ পেজানো == "ব্যবহারকারী-নতুন.পিপি" দ্বারা ফিল্টার করি। কোডটি ব্যাখ্যা করার জন্য এখন আমি হ্যাক মন্তব্য করেছি।
এনকেআর

3
আপনি user_new_formঅ্যাকশন ব্যবহার করবেন না কেন ?
itazzad

পয়েন্টার জন্য @SazzadTusharKhan TX
Alex

3

আপনার 2 টি জিনিস করা দরকার।

  1. ক্ষেত্র নিবন্ধন করুন
  2. ক্ষেত্রগুলি সংরক্ষণ করুন

দ্রষ্টব্য: নীচের উদাহরণে কেবল administratorব্যবহারকারীর ভূমিকা জন্য কাজ করে ।


1. ক্ষেত্র নিবন্ধন করুন

জন্য যোগ করুন নতুন ব্যবহারকারী ব্যবহার কর্মuser_new_form

জন্য ব্যবহারকারী প্রোফাইল ব্যবহার কর্মের show_user_profile,edit_user_profile

স্নিপেট ক্ষেত্র নিবন্ধন করুন:

/**
 * Add fields to user profile screen, add new user screen
 */
if( !function_exists('m_register_profile_fields') ) {

    //  This action for 'Add New User' screen
    add_action( 'user_new_form', 'm_register_profile_fields' );

    //  This actions for 'User Profile' screen
    add_action( 'show_user_profile', 'm_register_profile_fields' );
    add_action( 'edit_user_profile', 'm_register_profile_fields' );

    function m_register_profile_fields( $user ) {

        if ( !current_user_can( 'administrator', $user_id ) )
            return false;

        ?>

        <h3>Client Portal</h3>
        <table class="form-table">
            <tr>
                <th><label for="dropdown">Portal Category</label></th>
                <td>
                    <input type="text" class="regular-text" name="portal_cat" value="<?php echo esc_attr( get_the_author_meta( 'portal_cat', $user->ID ) ); ?>" id="portal_cat" /><br />
                </td>
            </tr>
        </table>
    <?php }
}

2. ক্ষেত্র সংরক্ষণ করুন

জন্য যোগ করুন নতুন ব্যবহারকারী ব্যবহার কর্মuser_register

জন্য ব্যবহারকারী প্রোফাইল ব্যবহার কর্মের personal_options_update,edit_user_profile_update

ক্ষেত্রগুলি স্নিপেট সংরক্ষণ করুন:

/**
 *  Save portal category field to user profile page, add new profile page etc
 */
if( !function_exists('m_register_profile_fields') ) {

    //  This action for 'Add New User' screen
    add_action( 'user_register', 'cp_save_profile_fields' );

    //  This actions for 'User Profile' screen
    add_action( 'personal_options_update', 'cp_save_profile_fields' );
    add_action( 'edit_user_profile_update', 'cp_save_profile_fields' );

    function cp_save_profile_fields( $user_id ) {

        if ( !current_user_can( 'administrator', $user_id ) )
            return false;

        update_usermeta( $user_id, 'portal_cat', $_POST['portal_cat'] );
    }
}

সম্পূর্ণ কোড স্নিপেট:

/**
 * Add fields to user profile screen, add new user screen
 */
if( !function_exists('m_register_profile_fields') ) {

    //  This action for 'Add New User' screen
    add_action( 'user_new_form', 'm_register_profile_fields' );

    //  This actions for 'User Profile' screen
    add_action( 'show_user_profile', 'm_register_profile_fields' );
    add_action( 'edit_user_profile', 'm_register_profile_fields' );

    function m_register_profile_fields( $user ) {

        if ( !current_user_can( 'administrator', $user_id ) )
            return false;

        ?>

        <h3>Client Portal</h3>
        <table class="form-table">
            <tr>
                <th><label for="dropdown">Portal Category</label></th>
                <td>
                    <input type="text" class="regular-text" name="portal_cat" value="<?php echo esc_attr( get_the_author_meta( 'portal_cat', $user->ID ) ); ?>" id="portal_cat" /><br />
                </td>
            </tr>
        </table>
    <?php }
}


/**
 *  Save portal category field to user profile page, add new profile page etc
 */
if( !function_exists('m_register_profile_fields') ) {

    //  This action for 'Add New User' screen
    add_action( 'user_register', 'cp_save_profile_fields' );

    //  This actions for 'User Profile' screen
    add_action( 'personal_options_update', 'cp_save_profile_fields' );
    add_action( 'edit_user_profile_update', 'cp_save_profile_fields' );

    function cp_save_profile_fields( $user_id ) {

        if ( !current_user_can( 'administrator', $user_id ) )
            return false;

        update_usermeta( $user_id, 'portal_cat', $_POST['portal_cat'] );
    }
}

2

পৃষ্ঠার ফর্ম শুরুর ট্যাগটির user_new_form_tagঅভ্যন্তরে যা থাকে তা ব্যবহার করে আমি কাজ করতে পারি user-new.php। এটি শেষ পর্যন্ত তাই যদি আপনি তার পরে এইচটিএমএল আউটপুট করেন তবে আপনাকে কেবল নিজের কোড >দিয়ে শেষ আউটপুটটি সরিয়ে আউটপুটটি শুরু করতে হবে >। হিসাবে:

function add_new_field_to_useradd()
{
    echo "><div>"; // Note the first '>' here. We wrap our own output to a 'div' element.

    // Your wanted output code should be here here.

    echo "</div"; // Note the missing '>' here.
}

add_action( "user_new_form_tag", "add_new_field_to_useradd" );

user_new_form_tagঅবস্থিত user-new.phpপ্রায় লাইন 303 (অন্তত WP3.5.1 মধ্যে):

...
<p><?php _e('Create a brand new user and add it to this site.'); ?></p>
<form action="" method="post" name="createuser" id="createuser" class="validate"<?php do_action('user_new_form_tag');?>>
<input name="action" type="hidden" value="createuser" />
...

অবশ্যই এখানে খারাপ দিকটি হ'ল ডাব্লুপি কোরে ক্ষেত্রগুলি ঘোষণার আগে আপনার সমস্ত কাস্টম ক্ষেত্রটি অবশ্যই ফর্মটিতে উপস্থিত হবে।


2

হুকগুলি গুরুত্বপূর্ণ, আমরা ফাংশনের অভ্যন্তরে ফর্ম ক্ষেত্রগুলি বাছাই করেই যাই হোক না কেন। আমার ইনলাইন মন্তব্য অনুসরণ করুন। ওয়ার্ডপ্রেস ৪.২.২ অনুসারে আমাদের কাছে এখন প্রচুর হুক রয়েছে:

<?php
/**
 * Declaring the form fields
 */
function show_my_fields( $user ) {
   $fetched_field = get_user_meta( $user->ID, 'my_field', true ); ?>
    <tr class="form-field">
       <th scope="row"><label for="my-field"><?php _e('Field Name') ?> </label></th>
       <td><input name="my_field" type="text" id="my-field" value="<?php echo esc_attr($fetched_field); ?>" /></td>
    </tr>
<?php
}
add_action( 'show_user_profile', 'show_my_fields' ); //show in my profile.php page
add_action( 'edit_user_profile', 'show_my_fields' ); //show in my profile.php page

//add_action( 'user_new_form_tag', 'show_my_fields' ); //to add the fields before the user-new.php form
add_action( 'user_new_form', 'show_my_fields' ); //to add the fields after the user-new.php form

/**
 * Saving my form fields
 */
function save_my_form_fields( $user_id ) {
    update_user_meta( $user_id, 'my_field', $_POST['my_field'] );
}
add_action( 'personal_options_update', 'save_my_form_fields' ); //for profile page update
add_action( 'edit_user_profile_update', 'save_my_form_fields' ); //for profile page update

add_action( 'user_register', 'save_my_form_fields' ); //for user-new.php page new user addition

1

user_contactmethodsফিল্টার হুক user-new.phpপৃষ্ঠায় কল করা হবে না যাতে অভ্যাস কাজ করে এবং দুঃখের বিষয় যদি আপনি উত্সটি একবার দেখেন তবে আপনি দেখতে পাবেন যে এমন কোনও হুক নেই যা ব্যবহারকারীর সাথে নতুন ক্ষেত্র যুক্ত করতে নতুন ক্ষেত্র যুক্ত করতে পারে।

সুতরাং এটি কেবলমাত্র মূল ফাইলগুলি (বিগ নো নো) সংশোধন করে বা জাভাস্ক্রিপ্ট বা jQuery ব্যবহার করে ক্ষেত্রগুলি যুক্ত করে এবং ক্ষেত্রগুলি ধরা দ্বারা করা যেতে পারে।

অথবা আপনি ট্রাকে একটি টিকিট তৈরি করতে পারেন


দুর্ভাগ্যক্রমে, এটির কাজ করার জন্য, অস্থায়ীভাবে, আমি ব্যবহারকারী-নতুন.এফপি পরিবর্তন করতে বাধ্য হয়েছিলাম। এটি একটি নং না। তবে আশা করি এটি অস্থায়ী।
জাচ শালবেটার

1

নিম্নলিখিত কোডটি "ব্যবহারকারী যোগ করুন" ফর্মের "জীবনী তথ্য" প্রদর্শন করবে


function display_bio_field() {
  echo "The field html";
}
add_action('user_new_form', 'display_bio_field');


কেবলমাত্র একটি কোডের উত্তরটি একটি খারাপ উত্তর। সম্পর্কিত কোডেক্স নিবন্ধটি লিঙ্ক করার এবং এখানে কোডটি ব্যাখ্যা করার চেষ্টা করুন।
মায়নুল ইসলাম

0

এটি করার জন্য আপনাকে ব্যবহারকারী-নতুন.এফপি পৃষ্ঠাটি ম্যানুয়ালি পরিবর্তন করতে হবে। এটি পরিচালনা করার সঠিক উপায় নয় তবে আপনি যদি মরিয়া হয়ে থাকেন তবে এটি এইভাবে হয়।

আমি আরো বললাম

<tr class="form-field">
    <th scope="row"><label for="company_name"><?php _e('Company Name') ?> </label></th>
    <td><input name="company_name" type="text" id="company_name" value="<?php echo esc_attr($new_user_companyname); ?>" /></td>
</tr>

আমি ফাংশন.এফপি তে তথ্য যুক্ত করেছি

   function my_custom_userfields( $contactmethods ) {
    $contactmethods['company_name']             = 'Company Name';
    return $contactmethods;
   }
   add_filter('user_contactmethods','my_custom_userfields',10,1);

0

এটি নতুন ব্যবহারকারী পৃষ্ঠা যুক্ত করার জন্য এটি করবে না, তবে আপনি যদি এটি "আপনার প্রোফাইল" পৃষ্ঠাতে করতে চান (যেখানে ব্যবহারকারীরা তাদের প্রোফাইল সম্পাদনা করতে পারেন), তবে আপনি এটি ফাংশন.এফপিএফ চেষ্টা করে দেখতে পারেন:

add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
function my_show_extra_profile_fields( $user ) { ?>
    <h3>Extra profile information</h3>
    <table class="form-table">
        <tr>
            <th><label for="companyname">Company Name</label></th>
            <td>
                <input type="text" name="companyname" id="companyname" value="<?php echo esc_attr( get_the_author_meta( 'companyname', $user->ID ) ); ?>" class="regular-text" /><br />
                <span class="description">Where are you?</span>
            </td>
        </tr>
    </table>
<?php }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.