सदस्य को केवल कस्टम पोस्ट प्रकार तक पहुंच की अनुमति दें। केवल अपने स्वयं के पदों को संपादित करने की अनुमति


29

ठीक है मैं इस पर हमला करने का सबसे अच्छा तरीका ढूंढ रहा हूं।

मैं PHP के साथ बहुत सहज हूं और वर्डप्रेस में कस्टम मेटा फ़ील्ड के साथ कस्टम पोस्ट प्रकार बना रहा हूं।

यहाँ मैं क्या कर रहा हूँ देख रहा हूँ:

  1. उपयोगकर्ता रजिस्टर और डिफ़ॉल्ट रूप से ग्राहक पर सेट है।
  2. कस्टम पोस्ट प्रकार की अनुमति के लिए व्यवस्थापक से उपयोगकर्ता अनुरोध।
  3. व्यवस्थापक उपयोगकर्ता को "शॉप ओनर" जैसे किसी अन्य अनुमति नाम पर असाइन करता है।
  4. उपयोगकर्ता अब कस्टम पोस्ट प्रकार देख सकते हैं और इस पोस्ट प्रकार में प्रवेश कर सकते हैं।
  5. उपयोगकर्ता केवल अपनी स्वयं की पोस्ट देख और संपादित कर सकते हैं।

मुझे निम्नलिखित पर मदद चाहिए:

  1. "शॉप ओनर" नामक एक नया "रोल" कैसे बनाएं
  2. केवल भूमिका को देखने के लिए सही अनुमति कैसे दें और कस्टम पोस्ट प्रकार तक पहुंच प्राप्त करें।
  3. केवल उपयोगकर्ता इस कस्टम पोस्ट प्रकार को अपने स्वयं के पोस्ट देखने और संपादित करने की अनुमति देते हैं।

आदर्श रूप से मैं पसंद करूंगा कि यह सब wp-admin से किया गया था, लेकिन मैं यह अनुमान लगा रहा हूं कि मुझे इसके बाद के परिमित नियंत्रण को प्राप्त करने के लिए एक फ्रंट एंड बनाने की आवश्यकता हो सकती है।

किसी इनपुट की काफी सराहना की जाती है।

सधन्यवाद

जवाबों:


21

जस्टिन टडलॉक के प्लगइन का उपयोग करें " सदस्य "। यह आपको नई भूमिकाएँ बनाने और मौजूदा भूमिकाओं को संपादित करने, साथ ही साथ कस्टम क्षमताओं को जोड़ने की क्षमता देता है। आपके द्वारा किए जाने वाले सभी कामों को कुछ क्लिकों तक ले जाया जा सकता है।

मुझे पता है कि आपने ज़मोज़ के जवाब पर अपनी टिप्पणी में कहा था कि आप 'स्वयं कार्यक्षमता लिखना चाहते हैं इसलिए मेरा हर चीज़ पर पूर्ण नियंत्रण है।' वह खुला स्रोत सॉफ़्टवेयर के पूरे बिंदु को याद नहीं कर रहा है। जस्टिन टडलॉक ने अपना प्लगइन जारी किया ताकि आप इसे ठीक से उपयोग कर सकें, ताकि आपको हर चीज पर पूरा नियंत्रण हो।

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

एक बार जब आपके पास एक प्लगइन होता है जो आप चाहते हैं, तो आपको अपने पोस्ट प्रकार पंजीकरण फ़ंक्शन में 'map_meta_cap'ध्वज को trueऔर ध्वज को बदलने की आवश्यकता होगी 'capability_type'ताकि यह 'पोस्ट', 'पेज' या किसी अन्य 'आरक्षित' के अलावा कुछ और कहे प्रकार। फिर, सभी पोस्ट (उदाहरण के लिए से संबंधित क्षमताओं नकल edit_posts, edit_others_posts, publish_posts, आदि), पदों के बजाय अपने क्षमता प्रकार का उपयोग। इन सभी अनुमतियों को व्यवस्थापकों को निर्दिष्ट करना सुनिश्चित करें (आप पोस्ट प्रकार को तब तक नहीं देख पाएंगे जब तक आप ऐसा नहीं करते), फिर अपनी भूमिका बनाएं, अपने पोस्ट प्रकार के लिए 'योगदानकर्ता' की भूमिका की क्षमताओं की नकल करें।

उदाहरण के लिए, मान लें कि आपका क्षमता प्रकार था foobars, तुम देना चाहता हूँ होगा 'दुकान मालिकों' edit_foobars, delete_foobarsऔर readक्षमताओं। इस तरह वे अपने स्वयं के ड्राफ्ट फोबर्स बना सकते हैं, और उन ड्राफ्ट को हटा सकते हैं, लेकिन क्योंकि उनके पास publish_foobarsक्षमताएं नहीं हैं , उन्हें उन्हें अनुमोदन के लिए प्रस्तुत करना होगा। क्योंकि उनके पास नहीं है edit_published_foobars, एक अनुमोदित फ़ॉबर के सभी संशोधनों को अनुमोदित करना होगा।


सदस्य अनुमतियाँ कैसे काम करती हैं, इसका एक जिस्ट प्राप्त करने के लिए, अब मेंबर प्लग इन का उपयोग करके ठीक है। मैं निर्धारित किया है 'map_meta_cap' => trueऔर 'capability_type' => 'shopowner'अपने कस्टम पोस्ट प्रकार पर। मैंने एक नई भूमिका बनाई है ShopOwnerऔर इसे पढ़ने, edit_shopowner, delete_shopowner की क्षमताओं को देखते हुए बनाया है। किसी उपयोगकर्ता को ShopOwner की भूमिका में सेट करें और उस उपयोगकर्ता के साथ लॉग इन करें। वह उपयोगकर्ता कस्टम पोस्ट प्रकार नहीं देख सकता है। क्या मुझे कुछ याद आया?
ब्रैडी

2
करने के लिए उन को बदलने edit_shopownersऔर delete_shopownersedit_shopownerऔर delete_shopownerमेटा क्षमताएं हैं जो वास्तव में कभी भी जाँच नहीं की जाती हैं। जब कोई व्यक्ति किसी विशिष्ट आइटम को संपादित करने या हटाने का प्रयास करता है, और "क्या यह उपयोगकर्ता इस प्रकार की वस्तुओं को हटा सकता है? क्या वे केवल अपने या दूसरों को भी हटा सकते हैं? क्या वे प्रकाशित वस्तुओं को हटा सकते हैं?" आदि
जॉन पी बलोच

मैं उस का कोई मतलब नहीं कर सकता ... लेकिन मुझे अपनी कस्टम पोस्ट प्रकार में क्षमताओं को स्थापित करने और सदस्यों के प्लगइन में उन क्षमताओं को बनाने के बाद मैं कार्यक्षमता प्राप्त कर रहा हूं। मैंने आपको जवाबों से सम्मानित किया है क्योंकि आपकी पोस्ट मेरे लिए सबसे उपयोगी थी कि एक साथ एक समाधान के लिए। धन्यवाद
ब्रैडी

19

रजिस्टर पोस्ट प्रकार में "क्षमताओं" नामक एक पैरामीटर है, इसलिए आपके पास उदाहरण के लिए हो सकता है

'capability' => 'organize_shop',

http://codex.wordpress.org/Function_Reference/register_post_type

एक नया उपयोगकर्ता / भूमिका / क्षमता बनाने के लिए आप एक सरल उदाहरण के लिए add_role, add_cap का उपयोग कर सकते हैं, जो आपको आरंभ करने के लिए है:

// Add the role to WordPress list of roles
// Then add the capability 'organize_shop' to the 'shop_owner' role
$role = add_role( 'shop_owner', 'Shop Owner', ['edit_posts' => true]));
$role->add_cap( 'organize_shop' );


// If 'shop_owner' already exists make `$wp_roles` visible then 
// add the capability 'organize_shop' to the 'Show Owner' role
public $wp_roles;
$wp_roles->add_cap( 'shop_owner', 'organize_shop' );

हम्म ... मैं थोड़ा उलझन में हूँ कि 2 और 3 लाइनों में क्या अंतर है? : S क्या यह 'शॉप ओनर'अरोले के समान क्षमता को नहीं जोड़ता है?
दशालुना

हां, वे समान हैं लेकिन वे इसे करने के लिए अलग-अलग तरीके दिखाते हैं, पहले वाले में पहले पैरामीटर (शॉप ओनर) के रूप में भूमिका शामिल है, दूसरा सिर्फ एक टोपी है क्योंकि यह $ भूमिका का उपयोग कर रहा है।
व्य्क सिप

3
क्या आप क्षमता / अनुमति का अनुवाद करने वाले हैं? वह __ ('') है;
स्वेतोस्लाव मारिनोव

@SvetoslavMarinov मैंने अनुवाद को हटाने के लिए उत्तर संपादित किया।
माइकस्किंकेल

@ डशालुना I ने इसे स्पष्ट करने के लिए उत्तर संपादित किया।
3

1

क्या आपने वास्तविक सामग्री प्रस्तुत करने के लिए ग्रेविटी फॉर्म या टीडीओ मिनी फॉर्म को देखने पर विचार किया है ? उनमें से प्रत्येक में कार्यक्षमता है जो आपको उपयोगकर्ता द्वारा प्रस्तुत सामग्री को पूरी तरह से संभालने की दिशा में अच्छी तरह से नीचे ले जाएगी।


उत्तर देने के लिए धन्यवाद, लेकिन ये वो नहीं हैं जो मैं खोज रहा हूं। मुख्य रूप से क्योंकि ये प्लगइन्स हैं। मैं स्वयं कार्यक्षमता लिखना चाहता हूं, इसलिए मुझे हर चीज पर पूरा नियंत्रण है।
ब्रैडी

0

एक आसान और कुशल तरीका यह है कि "एडवांस एक्सेस मैनेजर" नामक एक प्लगइन स्थापित करके इसे कैसे प्राप्त किया जा सकता है, आपको कार्यक्षमता लिखना नहीं होगा, लेकिन अभी भी उपयोगकर्ताओं, भूमिकाओं और वे क्या कर सकते हैं पर नियंत्रण का सभ्य स्तर है। अधिकांश सामान जो आप चाहते हैं वह इस प्लगइन द्वारा प्राप्त किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.