কোনও ব্যবহারকারীর ভূমিকা কীভাবে পরিবর্তন করবেন?


34

আমার সেটআপে আমার কাস্টম ভূমিকা আছে এবং আমি কোনও কার্যক্রমে কোনও ব্যবহারকারীর ভূমিকা স্বয়ংক্রিয়ভাবে পরিবর্তন করতে সক্ষম হতে চাই। বলুন যে এ এর ​​একটি সাবস্ক্রাইবার ভূমিকা রয়েছে, আমি কীভাবে এডিটারে এটি পরিবর্তন করব? কোনও ভূমিকা যুক্ত করার সময় আমরা কেবল:

add_role( $role_name , $role_display_name , array( 'read' =>  true,
                                                   'edit_posts' => false,
                                                   'delete_posts' => false, ));

একটি ভূমিকা পরিবর্তন সম্পর্কে কীভাবে? এখানে কি কিছু আছে:

change_role($old_role, $new_role);

আপডেট: আমি মনে করি এটি একজন করবে:

$wp_user_object = new WP_User($current_user->ID);
$wp_user_object->set_role('editor');

উত্তর:


50

দেখুন WP_User বর্গ , আপনি এই ব্যবহার একটি ব্যবহারকারী জুড়তে এবং ভূমিকা অপসারণ করতে পারেন।

সম্পাদনা: আমার এই উত্তরটির সাথে প্রাথমিকভাবে আরও তথ্য সরবরাহ করা উচিত ছিল, তাই আমি নীচে আরও তথ্য যুক্ত করছি।

আরও সুনির্দিষ্টভাবে, WP_user শ্রেণীর একটি উদাহরণ তৈরি করে এবং add_role()বা remove_role()পদ্ধতিগুলিকে কল করে কোনও ব্যবহারকারীর ভূমিকা সেট করা যেতে পারে ।

উদাহরণ

সম্পাদকের গ্রাহকদের ভূমিকা পরিবর্তন করুন

// NOTE: Of course change 3 to the appropriate user ID
$u = new WP_User( 3 );

// Remove role
$u->remove_role( 'subscriber' );

// Add role
$u->add_role( 'editor' );

আশা করি এটি আমার প্রাথমিক প্রতিক্রিয়ার চেয়ে আরও সহায়ক, যা প্রয়োজনীয় হিসাবে তেমন সহায়ক ছিল না।


remove_role()এবং add_rule()ডাটাবেসে ডেটা সংরক্ষণ করবেন?
বি_ডাব

18

কেবলমাত্র নোট করুন যে ব্যবহারকারীর ভূমিকা পরিবর্তন করার একটি সহজ উপায় রয়েছে যা বিশেষত সহায়ক যখন আপনি ব্যবহারকারীর বর্তমান ভূমিকাটি জানেন না: ->set_role()

উদাহরণ:

// Fetch the WP_User object of our user.
$u = new WP_User( 3 );

// Replace the current role with 'editor' role
$u->set_role( 'editor' );

মনে রাখবেন যে সেট_ক্রিয়া ব্যবহারকারীর পূর্ববর্তী ভূমিকা মুছে ফেলবে এবং নতুন ভূমিকাটি নির্ধারণ করবে।
শশী কাঁথ

1
এটি কাস্টম নিবন্ধকরণ ফর্মগুলির জন্য উপযুক্ত। প্রথমে কোনও ভূমিকা ছাড়াই ব্যবহারকারীদের নিবন্ধন করুন এবং এর পরে তারা ইমেল নিশ্চিত করার সময় ভূমিকা যুক্ত করে।
আইভিজন স্টেফান স্টিপিয়ি

3

T31os এর উত্তরে এক্সট্রপোলেট করার জন্য আপনি যদি কোনও শর্তের উপর ভিত্তি করে এই প্রোগ্রামটিমেটিকভাবে করতে চান তবে আপনার ফাংশন ফাইলে এই জাতীয় কিছুতে থাপ্পড় মারতে পারেন

$blogusers = get_users($blogID.'&role=student');

foreach ($blogusers as $user) {

    $thisYear = date('Y-7');
    $gradYear = date(get_the_author_meta( 'graduation_year', $user->ID ).'-7');

    if($gradYear < $thisYear) {
        $u = new WP_User( $user->ID );
        // Remove role
        $u->remove_role( 'student' );

        // Add role
        $u->add_role( 'adult' );
    }
}

আমি মনে করি আপনার ব্যবহার $blogIDভুল। get_users()ডিফল্ট হিসাবে বর্তমান ব্লগ আইডি যাইহোক ব্যবহার করবে।
ফুসিয়া

হ্যাঁ, আমার ক্ষেত্রে পেস্টটি কেবল একটি বহুবিশেষ উদাহরণ থেকে ছিল। আমি এটি এখানে সংজ্ঞায়িত করি নি তাই স্পষ্টতই এটি ত্রুটি ছুঁড়ে দেবে।
অ্যাডাম মুনস

2

আপনি ব্যবহারকারীদের প্রোফাইল সম্পাদনা করে যে কোনও ব্যবহারকারীর ভূমিকা পরিবর্তন করতে পারেন। এই বিকল্পটি ইতিমধ্যে ওয়ার্ডপ্রেসে তৈরি হয়ে গেলে আর কোনও কোড যুক্ত করার দরকার নেই।

এখানে চিত্র বর্ণনা লিখুন

অথবা

আপনি সম্পাদক ব্যবহারকারীর ভূমিকা সহ সমস্ত বর্তমান ব্যবহারকারীকে পরিবর্তন করতে কোড ব্যবহার করতে পারেন:

$current_user = wp_get_current_user();

// Remove role
$current_user->remove_role( 'subscriber' );

// Add role
$current_user->add_role( 'editor' );

1

তার জন্য একটি ওয়ার্ডপ্রেস ফাংশন আছে!

আমি মনে করি ওয়ার্ডপ্রেস ফাংশনগুলি কখন উপলব্ধ থাকে তা ব্যবহার করা ভাল।

আপনি wp_insert_user () ফাংশনটি ব্যবহার করতে পারেন , যেখানে আপনাকে যে আর্গুমেন্ট সরবরাহ করতে হবে তার মধ্যে একটি হল $ Userdata ['ভূমিকা']। এই যুক্তিতে আপনি সেই ভূমিকাটি নির্দিষ্ট করতে পারবেন যা আপনি ব্যবহারকারীকে পরিবর্তন করতে চান।


ডাব্লুপি এই ফাংশনটি চিনতে পারে না। আমি একটি "অপরিবর্তিত ফাংশন" ত্রুটি পেয়েছি।
জোয়ান

এটির চেহারা অনুসারে, wp_insert_user () ঠিক একই কাজ করছে বলে মনে হচ্ছে। আপনি যখন কোনও আইডি সরবরাহ করেন তখন সেই আইডি আপডেট হয়। কোনও আইডি নতুন ব্যবহারকারী যুক্ত করছে না। WP_update_user () এবং wp_insert_user () এর মধ্যে পার্থক্য কী তা আসলেই জানেন না।
কোইন জ্যাকবস

1

আপনি যদি একা একা স্ট্যান্ড স্ক্রিপ্ট হিসাবে কোডটি ব্যবহার করেন তবে আপনাকে /wp- অন্তর্ভুক্ত / নিবন্ধকরণ.পিএপি অন্তর্ভুক্ত করতে হবে। শুভেচ্ছা


1

আপনি wp_update_user ব্যবহার করতে পারেন । আপনার কোডটি জোরে জোরে থাকবে:

<?php
    $user_id = 3;
    $new_role = 'editor';

    $result = wp_update_user(array('ID'=>$user_id, 'role'=>$new_role));

    if ( is_wp_error( $result ) ) {
        // There was an error, probably that user doesn't exist.
    } else {
        // Success!
    }
?>

0
<?php
$wuser_ID = get_current_user_id();
if ($wuser_ID)
    {
      // NOTE: Of course change 3 to the appropriate user ID
      $u = new WP_User( $wuser_ID );

      // Remove role
      $u->remove_role( 'subscriber' );

      // Add role
      $u->add_role( 'contributor' );
    }
?>

0

আমি তার একটি খুব পুরানো পোস্ট জানি, কিন্তু আমি খুঁজে পেয়েছি যা ব্যবহারকারীদের জন্য ভূমিকা সংরক্ষিত হয় wp_usermetaকী দিয়ে টেবিল wp_capabilitiesমধ্যে meta_keyকলাম।

আপনি যদি ব্যবহারকারীর ভূমিকা পরিবর্তন করতে চান তবে আপনি এই সাধারণ ফাংশনটি দ্বারা এটি করতে পারেন।

function change_role($id, $new_role){
    GLOBAL $table_prefix;
    if(is_array($new_role)){
        $new_role_array = $new_role;
    }else{
        $new_role_array = array( $new_role => true );
    }
    return update_user_meta($id, $table_prefix.'capabilities', $new_role_array);
}

এই ফাংশনটি ব্যবহার করার দুটি উপায় রয়েছে।

আপনি যদি একটি একক ভূমিকার জন্য ভূমিকাটি পরিবর্তন করতে চান।

change_role(2, 'editor'); // editor is the new role

অথবা আপনি যদি ব্যবহারকারীকে একাধিক ভূমিকা যুক্ত করতে চান তবে দ্বিতীয় প্যারামিটারে অ্যারে হিসাবে ভূমিকাগুলি ব্যবহার করুন।

$roles_array = array('editor' => true, 'administrator' => true); // roles array
change_role(2, $roles_array);

শুভকামনা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.