WordPress SEO โดย Yoast: ซ่อนกล่อง Meta ในโพสต์สำหรับผู้ดูแลระบบ


9

ฉันมีเว็บไซต์หลายผู้แต่งและฉันไม่สบายใจที่อนุญาตให้สมาชิกทุกคนป้อนรายละเอียด SEO ในโพสต์ที่โพสต์ ฉันต้องการให้ผู้ดูแลเว็บไซต์นี้มองเห็นได้เท่านั้น ความคิดใด ๆ

คำตอบ:


19

มันไม่ได้บอกว่าใน API เอกสารบนเว็บไซต์ปลั๊กอินของ Yoast SEO สิ่งที่IDเคยเป็นและฉันไม่มีสำเนาของ Yoast เมื่อทำการติดตั้ง แต่ตามyoas-plugin-dir/admin/class-metabox.phpบรรทัดที่ 144 meta_box ที่ลงทะเบียนคือ;

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

ซึ่งติดเข้าadd_meta_boxesกับ hook ในบรรทัดที่ 32 ของไฟล์เดียวกัน

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

แน่นอนว่าคุณสามารถรับ ID จากกล่องเมตาดาต้าบนหน้าจอแก้ไขการโพสต์ ... อย่างไรก็ตาม

คุณสามารถทำสิ่งต่อไปนี้

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()สำหรับ
ไกเซอร์

@Ahmad M ขอบคุณสำหรับการแก้ไขที่แนะนำ แต่$post_typeไม่ต้องการพารามิเตอร์ var และ action argument ในอินสแตนซ์นี้และไม่ทิ้งการแจ้งเตือน / ข้อผิดพลาด นอกจากนี้หากคุณรวม$post_typevar คุณต้องกำหนดประเภทโพสต์ภายในฟังก์ชั่นอื่นที่คุณไม่ได้ทำดังนั้นผู้ใช้จะต้องเรียกใช้สิ่งนี้เพื่อให้มันทำงานไม่ถูกต้อง! ในกรณีนี้เป็นที่ยอมรับอย่างสมบูรณ์ในการส่งผ่านชื่อโพสต์ประเภทเช่น'post'ตรงไปยังremove_meta_boxฟังก์ชั่น ขอบคุณสำหรับข้อเสนอแนะ
อดัม

@userabuser: ขอบคุณสำหรับความกระจ่าง แต่$post_typeมีการกำหนดไว้แล้วและพร้อมใช้งานโดยadd_meta_boxesฟังก์ชั่น action hook โปรดดูมุมมอง Adam Brown sorceของ hook การกระทำนี้ การใช้$post_typeในกรณีนี้จะทำให้โค้ดเป็นอิสระจากpost_typeหน้าจอแก้ไขซึ่งหมายความว่าจะลบwpseo_metaเมตาบ็อกซ์จากประเภทโพสต์ทั้งหมดที่พบในและจะไม่ส่งคืนสิ่งใดในกรณีที่wpseo_metaไม่พบ
Ahmad M

@ AhmadM ขอบคุณเพื่อน ฉันรู้ว่ามีการกำหนด var ไว้แล้ว แต่นั่นไม่ได้ทำให้เป็นสิ่งจำเป็นในการส่งผ่านไปยัง hook / function ในกรณีนี้ OP ต้องการลบกล่องเมตาออกจากpostpost_type ซึ่งเป็นสาเหตุที่โซลูชันเริ่มต้นจะอนุญาตการควบคุมแบบละเอียด อย่างไรก็ตามในกรณีที่คุณต้องการลบมันสำหรับโพสต์ทุกประเภทแล้วใช้ var ที่กำหนดไว้แล้ว$post_typeเป็นที่น่าพอใจ สิ่งที่ฉันจะทำคือแก้ไขคำตอบของฉันเพื่อรวมตัวอย่างเพิ่มเติมของคุณโดยใช้$post_typeตัวแปรสำหรับสถานการณ์ที่บางคนอาจต้องการใช้สิ่งนี้กับ post_types ที่ลงทะเบียนทั้งหมด
อดัม

5

ลองวางในปลั๊กอินหรือรูปแบบfunctions.phpไฟล์เป็นต่อWordPress ปลั๊กอิน SEO ( API เอกสาร ) โดย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' );
}

สังเกตว่า 100,000 ใน add_action สิ่งนี้ทำให้แน่ใจว่าจะทำหลังจาก WP SEO metabox ได้รับการเชื่อมโยง


2

คุณสามารถใช้ปลั๊กอินผู้ดูแลระบบเพื่อซ่อนรายการจากผู้ใช้โดยขึ้นอยู่กับบทบาทของพวกเขา ใช้สิ่งนี้เองเพื่อซ่อนบางสิ่งที่ Yoast SEO จากลูกค้าและทำให้ส่วนหลังง่ายขึ้น

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

ค่อนข้างตรงไปตรงมาเพื่อใช้โดยการเพิ่มตัวเลือก css สำหรับรายการที่คุณต้องการซ่อน ใช้เพื่อซ่อนแท็บ SEO Page Analysis (#linkdex)


0

มีตัวเลือกการตั้งค่าบน WordPress SEO โดย Yoast สำหรับการปิดใช้งานส่วนขั้นสูงของการตั้งค่า WordPress SEO สำหรับผู้ดูแลระบบที่ไม่ใช่ หากคุณต้องการปิดการใช้งานกล่องอย่างสมบูรณ์จากนั้นคุณสามารถใช้ปลั๊กอินอื่นเพื่อลบองค์ประกอบของหน้าบรรณาธิการโพสต์สำหรับผู้ดูแลระบบที่ไม่ใช่ผู้ดูแลเช่นลบกล่อง WordPress SEO จากเครื่องมือแก้ไขโพสต์สำหรับผู้ดูแลที่ไม่ใช่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.