WordPress SEO by Yoast: गैर-प्रवेशकों के लिए पोस्ट में मेटा बॉक्स छिपाएं


9

मेरे पास बहु-लेखक वेबसाइट है और मैं सभी सदस्यों को उन पोस्ट में एसईओ विवरण दर्ज करने की अनुमति देने के लिए बहुत सहज नहीं हूं जो वे प्रकाशित कर रहे हैं। मैं चाहूंगा कि यह केवल वेबसाइट के प्रशासक को दिखाई दे। कोई विचार?

जवाबों:


19

यह योस्ट एसईओ प्लगइन साइट पर एपीआई डॉक्स में नहीं कहा IDगया था कि क्या था और मेरे पास निपटान में स्थापित yoas-plugin-dir/admin/class-metabox.phpयोस्ट की एक प्रति नहीं है, लेकिन लाइन 144 के अनुसार , मेटा_बॉक्स पंजीकृत है;

add_meta_box( 'wpseo_meta', ...etc ); ...

जिसे एक add_meta_boxesही फाइल के लाइन 32 पर हुक पर हुक किया जाता है,

add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );

बेशक आप पोस्ट एडिट स्क्रीन पर मेटा बॉक्स से ही आईडी प्राप्त कर सकते हैं ... वैसे भी।

आप निम्न कार्य कर सकते हैं,

add_action('add_meta_boxes', 'yoast_is_toast', 99);
function yoast_is_toast(){
    //capability of 'manage_plugins' equals admin, therefore if NOT administrator
    //hide the meta box from all other roles on the following 'post_type' 
    //such as post, page, custom_post_type, etc
    if (!current_user_can('activate_plugins')) {
        remove_meta_box('wpseo_meta', 'post_type', 'normal');
    }
}

... जहां पोस्ट प्रकार वह पोस्ट प्रकार है जिसे आप इस प्रतिबंध को भी लागू करना चाहते हैं, जैसे कि postया कस्टम पोस्ट प्रकार एक या अधिक!

चाल चलनी चाहिए।

अद्यतन: manage_pluginsहोना चाहिए था activate_plugins- संशोधित।


16
के लिए +1 yoast_is_toast()
kaiser

@ अहमदाबाद एम को सुझाए गए संपादन के लिए धन्यवाद, लेकिन $post_typeइस उदाहरण में संस्करण और कार्रवाई तर्क पैरामीटर की आवश्यकता नहीं है और नोटिस / त्रुटि को फेंक नहीं देता है। इसके अलावा अगर आप $post_typevar को शामिल करते हैं तो आपको फ़ंक्शन के भीतर पोस्ट प्रकार को परिभाषित करने की आवश्यकता है जो आपने नहीं किया है, इसलिए उपयोगकर्ता ने इसे अनुचित तरीके से काम करने के लिए चलाया होगा! इस मामले में इसकी पूरी तरह से स्वीकार्य है पोस्ट प्रकार के नाम में यानी 'post'सीधे remove_meta_boxकार्य में। वैसे भी सुझाव के लिए धन्यवाद।
एडम

@userabuser: स्पष्टीकरण के लिए धन्यवाद, लेकिन $post_typeपहले से ही परिभाषित है और add_meta_boxesएक्शन हुक कार्यों द्वारा उपयोग किए जाने के लिए तैयार है , कृपया एडम ब्राउन को इस एक्शन हुक के दृश्य देखें$post_typeइस मामले में उपयोग करने से कोड post_typeसंपादन स्क्रीन से स्वतंत्र हो जाएगा, जिसका अर्थ है कि यह पोस्ट किए wpseo_metaगए सभी प्रकारों से मेटा बॉक्स को हटा देगा , और जो कुछ भी wpseo_metaनहीं मिला है उसे वापस कर देगा ।
अहमद एम

@ अहमद थैंक्स मेट। मैं पहले से ही परिभाषित किए जा रहे संस्करण के बारे में जानता हूं, हालांकि यह हुक / फ़ंक्शन में जाने के लिए आवश्यक नहीं बनाता है। इस मामले में ओपी मेटा बॉक्स को postपोस्ट_टाइप से हटाना चाहता है, यही वजह है कि प्रारंभिक समाधान दानेदार नियंत्रण के लिए अनुमति देगा। हालाँकि उस मामले में जहाँ आप इसे सभी पोस्ट प्रकारों के लिए निकालना चाहते हैं, तो पहले से परिभाषित संस्करण $post_typeका उपयोग करना संतोषजनक है। मैं क्या करूंगा, उन $post_typeस्थितियों के लिए चर का उपयोग करके अपने अतिरिक्त उदाहरण को शामिल करने के लिए मेरे उत्तर को संपादित करें जहां कोई व्यक्ति सभी पंजीकृत पोस्ट_टाइप्स पर इसे लागू करना चाह सकता है।
एडम

5

एक प्लगइन या विषय में इस चिपकाकर प्रयास करें functions.phpफ़ाइल, के अनुसार वर्डप्रेस एसईओ प्लगइन ( एपीआई डॉक्स , द्वारा) Yoast

if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
    add_filter('wpseo_use_page_analysis', '__return_false');
}

किसी भी त्रुटि से बचने के लिए ... यह सुनिश्चित करने के लिए कि चेक मौजूद है, सामान को छिपाने का प्रयास करने से पहले, आप प्लगइन को निष्क्रिय करने की अनुमति देते हैं, और त्रुटियों को न फेंकें।

initइसे ठीक से काम करने के लिए आपको हुक करने की आवश्यकता हो सकती है , जो इस तरह से किया जा सकता है:

function wpse_init(){
    if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
        add_filter('wpseo_use_page_analysis', '__return_false');
    }   
}
add_action('init', 'wpse_init');

4

आप इसे remove_meta_box फ़ंक्शन का उपयोग करके निकाल सकते हैं ।

if ( ! current_user_can( 'edit_pages' ) ) {
    add_action( 'add_meta_boxes', 'my_remove_wp_seo_meta_box', 100000 );
}

function my_remove_wp_seo_meta_box() {
    remove_meta_box( 'wpseo_meta', 'post', 'normal' );
}

Add_action में 100000 पर ध्यान दें, इससे यह सुनिश्चित हो जाता है कि WP SEO मेटाबॉक्‍स को हुक करने के बाद ऐसा किया गया है।


2

आप अपनी भूमिकाओं के आधार पर उपयोगकर्ताओं से आइटम छिपाने के लिए व्यवस्थापक प्लग इन का उपयोग कर सकते हैं। ग्राहकों से कुछ Yoast SEO सामान छिपाने और बैक एंड को सरल बनाने के लिए इसका उपयोग किया है।

http://wordpress.org/extend/plugins/adminimize/

जिन वस्तुओं को आप छिपाना चाहते हैं, उनके लिए सीएसएस चयनकर्ताओं को जोड़कर उपयोग करने के लिए बहुत सीधे आगे। इसका उपयोग एसईओ पृष्ठ विश्लेषण टैब (#linkdex) को छिपाने के लिए किया है


0

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

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