ক্ষমতা গ্রুপ: একাধিক ভূমিকা সঙ্গে ব্যবহারকারী?


9

আমি নিশ্চিত যে আমি ওয়ার্ডপ্রেসে ভূমিকাগুলি এবং দক্ষতা সেটআপ বুঝি: গ্রানুলার ক্ষমতাগুলি, ব্যবহারকারীদেরকে অর্পণ করা যেতে পারে এমন ভূমিকাতে একত্রে গোষ্ঠীযুক্ত। কোডে ভৌগলিক ক্ষমতাগুলি পরীক্ষা করা উচিত, ভুমিকা নয় (কারণ বিশেষ ভূমিকার জন্য ক্ষমতাগুলি পরিবর্তন করতে পারে)। ভূমিকাগুলি অগত্যা শ্রেণিবদ্ধ নয় (যদিও ডিফল্ট ভূমিকাগুলি হয়)।

ব্যবহারকারীদের একাধিক ভূমিকা নিযুক্ত করার কোনও উপায় আছে কি? বিকল্পভাবে, বেশ কয়েকটি ক্ষমতার দল রয়েছে, এবং কোনও ব্যবহারকারীর সাথে এক বা একাধিক গোষ্ঠী সংযুক্ত করছেন? আমার সাইটটি যেভাবে কাজ করে, সেখানে বেশ কয়েকটি সুস্পষ্ট দায়িত্ব রয়েছে: ওয়েব পৃষ্ঠাগুলি আপডেট করা, ফোরামগুলি সংশোধন করা, ইভেন্ট ক্যালেন্ডার আপডেট করা ইত্যাদি and প্রতিটি দায়বদ্ধতার সাথে সম্পর্কিত কাজগুলি সম্পাদন করার জন্য প্রয়োজনীয় একটি গোষ্ঠী রয়েছে। আমি একজনকে এক বা একাধিক দায়িত্ব পালনে সক্ষম করতে চাই। সুতরাং ব্যবহারকারী এ ওয়েব পৃষ্ঠাগুলি এবং ইভেন্ট ক্যালেন্ডার আপডেট করতে পারে তবে ফোরামগুলি মাঝারি করতে পারে না (প্রায় কৌশলগতভাবে যথেষ্ট নয়) তবে ব্যবহারকারী বি ফোরামগুলি সংযত করতে, ইভেন্ট ক্যালেন্ডার আপডেট করতে পারে, তবে ওয়েব পৃষ্ঠাগুলির নিকটে অনুমোদিত নয়।

দায়িত্বগুলির প্রতিটি সম্ভাব্য সংমিশ্রনের জন্য ভূমিকা সংজ্ঞা দেওয়ার সংক্ষিপ্ততা, এটি করার কোনও উপায় আছে কি?


ভূমিকা Scoper প্লাগইন সম্পন্ন করার জন্য আপনি যা খুঁজছেন তা সক্ষম হতে পারে।
ডেভিন হামবার্ট

আমি মনে করি এটি প্রতি পৃষ্ঠায় বা প্রতি পোস্টের ভিত্তিতে আরও বেশি, যা আমি যা খুঁজছি তা আসলে নয়, তবে আমি আরও কিছুটা তদন্ত করব, ধন্যবাদ।
lpryor

@ প্লায়ার - রোল স্কোপারের একাধিক বিকল্প রয়েছে, আপনি ব্যবহারকারী বা গোষ্ঠীগুলির জন্য প্রতি পৃষ্ঠায় এবং প্রতি-পোস্টকে নিয়ন্ত্রণ করতে পারেন, তবে প্রতি বিভাগ, প্রতি-কর-বিভাগ এবং প্রতি-পোস্ট-টাইপও করতে পারেন, তাই মনে হয় আপনি কী অর্জন করতে পারবেন এই সঙ্গে পরে।
মিলো

এই এক চেষ্টা gist.github.com/nikolov-tmw/7808046 ভূমিকা নির্বাচন একাধিক চেকবাক্সগুলি যোগ করুন
OzzyCzech

উত্তর:


3

অন্তর্নিহিত WP_User শ্রেণি একাধিক ভূমিকা সমর্থন করার পরে একাধিকবার একাধিক ভূমিকার অভাব আমাকে বিরক্ত করেছিল। আমি এমনকি বিকল্প সফ্টওয়্যার সমাধান খুঁজছেন বিবেচনা করেছি। @ প্ল্রিয়ার - আপনার পোস্টটি পড়ার পরে, আমি নিজেই এটি বাস্তবায়নের জন্য উত্সাহিত হয়েছিলাম।

এটি করার জন্য আমার আশ্চর্যজনকভাবে সংক্ষিপ্ত সংখ্যক লাইন লেগেছিল যদিও আমার কাছে এটি করার জন্য একটি পৃথক প্লাগইন তৈরি করতে খুব অলস হওয়ার কারণে আমি ইউজার্স.এফপি ফাইলটি হ্যাক করতে হয়েছিল। স্পষ্টতই এটি করার এটি ভুল উপায় তাই ভবিষ্যতে যদি আমি যথেষ্ট প্রেরণা পাই তবে আমি এটি সঠিকভাবে করার চেষ্টা করতে পারি।

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

(আমি ৩.২ ব্যবহার করছি যাতে আপনার লাইন নম্বরগুলি পৃথক হতে পারে) শ্রেণিতে- wp-users-list-table.php 150 লাইনের ঠিক আগে কিছুটিকে যুক্ত করুন:

<div class="alignleft actions">
    <label class="screen-reader-text" for="remove_role"><?php _e( 'Remove role &hellip;' ) ?></label>
    <select name="remove_role" id="remove_role">
        <option value=''><?php _e( 'Remove role &hellip;' ) ?></option>
        <?php wp_dropdown_roles(); ?>
    </select>
    <?php submit_button( __( 'Remove' ), 'secondary', 'changeit', false ); ?>
</div>

তারপরে এই জাতীয় কিছু দেখতে কারেন্ট_একউন্ট অ্যাকাউন্ট ফাংশনটি পরিবর্তন করুন

function current_action() {
    if ( isset($_REQUEST['changeit']) ) {
        if ( !empty($_REQUEST['new_role']) )
            return 'promote';
        elseif ( !empty($_REQUEST['remove_role']) )
            return 'remove_role';
    }

    return parent::current_action();

}

এখন ব্যবহারকারী.এফপি লাইনে 71১-7676 মন্তব্য করুন

/*
if ( $id == $current_user->ID && !$wp_roles->role_objects[$_REQUEST['new_role']]->has_cap('promote_users') ) {
    $update = 'err_admin_role';
    continue;
}
*/

_৩ লাইনে সেট_রেলটি অ্যাড_রোলের সাথে প্রতিস্থাপন করুন

$user->add_role($_REQUEST['new_role']);

লাইনের ৯২ এ নিম্নলিখিতটি যুক্ত করুন (এটি কেবল প্রচারিত ক্রিয়াকলাপ থেকে হালকা সম্পাদিত অনুলিপি এবং পেস্ট করুন - আমি প্রচার-ব্যবহারকারীর ভূমিকা মুছে ফেলার জন্য উপযুক্ত কিনা তা নিশ্চিত করার জন্য পরীক্ষা করে দেখিনি)

case 'remove_role':
    check_admin_referer('bulk-users');

    if ( ! current_user_can( 'promote_users' ) )
            wp_die( __( 'You can&#8217;t edit that user.' ) );

    if ( empty($_REQUEST['users']) ) {
            wp_redirect($redirect);
            exit();
    }

    $editable_roles = get_editable_roles();
    if ( empty( $editable_roles[$_REQUEST['remove_role']] ) )
            wp_die(__('You can&#8217;t remove that role'));

    $userids = $_REQUEST['users'];
    $update = 'remove_role';
    foreach ( $userids as $id ) {
            $id = (int) $id;

            if ( ! current_user_can('promote_user', $id) )
                    wp_die(__('You can&#8217;t edit that user.'));
            // The new role of the current user must also have promote_users caps
            // Need to think this through
            /*
            if ( $id == $current_user->ID && !$wp_roles->role_objects[$_REQUEST['new_role']]->has_cap('promote_users') ) {
                    $update = 'err_admin_role';
                    continue;
            }
            */

            // If the user doesn't already belong to the blog, bail.
            if ( is_multisite() && !is_user_member_of_blog( $id ) )
                    wp_die(__('Cheatin&#8217; uh?'));

            $user = new WP_User($id);
            $user->remove_role($_REQUEST['remove_role']);
    }

    wp_redirect(add_query_arg('update', $update, $redirect));
    exit();

370 লাইনে নিম্নলিখিতটি যুক্ত করুন

case 'remove_role':
    $messages[] = '<div id="message" class="updated"><p>' . __('Removed role.') . '</p></div>';
    break;

এটি দুর্দান্ত দেখাচ্ছে, @ আদি-এয়াল, অনেক অনেক ধন্যবাদ! আমি এটির মাধ্যমে আমার কাজ করব এবং চেষ্টা করব।
lpryor

@ প্লায়ার ওহে, আপনি কি ডাব্লুপি কোর কোডটি হ্যাক না করে একাধিক ভূমিকা বাস্তবায়ন করতে পেরে ভাবছিলেন? জানলে দারুণ হত! আমি কোনও প্লাগইন খুঁজে পাইনি, তবে একই সাথে মূল ডাব্লুপি কোড হ্যাক করতে চাই না। ধন্যবাদ!
দশলুন

@ দাশালুনা আমি এখনও এটিতে সক্ষম হতে পারি নি তবে এটি আমার তালিকার শীর্ষে এসে গেছে!
lpryor

5
হ্যাকিং কোর এর মতো হবার উপায় নেই। এটি ওয়ার্ডপ্রেস কোরের কোনও আপডেটে মুছে ফেলা হবে । এটি হুক বা এটিকে ভুলে যাও - দুঃখিত, তবে এটি (এটি কাজ করেও) এমন কোনও কিছুই নয় যা সুপারিশ করা উচিত।
কায়সার

কোর আপডেট করা ভাল অভ্যাস নয়। পরিবর্তে অ্যাকশন / ফিল্টার হুক ব্যবহার করুন।
fi সূফী

3

ব্যবহারকারীর ভূমিকা সম্পাদক প্লাগইন কোনও ব্যবহারকারীর জন্য একাধিক ভূমিকা পরিচালনা করে।

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


0

আমি কাস্টম তৈরি ক্ষমতা সহ সদস্য প্লাগইন ব্যবহার করি ।

আপনি এক ব্যক্তিকে বেশ কয়েকটি ভূমিকা অর্পণ করতে পারবেন না তবে আপনি যে কোনও ভূমিকা তৈরি করতে এবং সেই ভূমিকার কী ক্ষমতা রয়েছে তা নির্দিষ্ট করতে পারেন।

টেম্পলেটগুলিতে আপনি কারেন্ট_উজার_কেন () ব্যবহার করতে পারেন ।


হ্যাঁ আমি বুঝতে পারি তবে আমি ভাবছিলাম যে প্রতিটি সম্ভাব্য দায়িত্বের সংমিশ্রণের জন্য আলাদা ভূমিকা নির্ধারণের কোনও উপায় নেই কিনা। সংযুক্তিবিদরা এটি খুব মজাদার এবং ত্রুটির প্রবণ হতে পারে না।
lpryor

আমি খুব বেশি গুগলিং পাইনি। আমার কাছে সবচেয়ে কাছেরটি এই থ্রেডটি ছিল: wordpress.org/support/topic/m Multipleple-roles-for-a-user
স্টিভেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.