ฉันมีเว็บไซต์หลายผู้แต่งและฉันไม่สบายใจที่อนุญาตให้สมาชิกทุกคนป้อนรายละเอียด SEO ในโพสต์ที่โพสต์ ฉันต้องการให้ผู้ดูแลเว็บไซต์นี้มองเห็นได้เท่านั้น ความคิดใด ๆ
ฉันมีเว็บไซต์หลายผู้แต่งและฉันไม่สบายใจที่อนุญาตให้สมาชิกทุกคนป้อนรายละเอียด SEO ในโพสต์ที่โพสต์ ฉันต้องการให้ผู้ดูแลเว็บไซต์นี้มองเห็นได้เท่านั้น ความคิดใด ๆ
คำตอบ:
มันไม่ได้บอกว่าใน 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
กระสุน
$post_type
ไม่ต้องการพารามิเตอร์ var และ action argument ในอินสแตนซ์นี้และไม่ทิ้งการแจ้งเตือน / ข้อผิดพลาด นอกจากนี้หากคุณรวม$post_type
var คุณต้องกำหนดประเภทโพสต์ภายในฟังก์ชั่นอื่นที่คุณไม่ได้ทำดังนั้นผู้ใช้จะต้องเรียกใช้สิ่งนี้เพื่อให้มันทำงานไม่ถูกต้อง! ในกรณีนี้เป็นที่ยอมรับอย่างสมบูรณ์ในการส่งผ่านชื่อโพสต์ประเภทเช่น'post'
ตรงไปยังremove_meta_box
ฟังก์ชั่น ขอบคุณสำหรับข้อเสนอแนะ
$post_type
มีการกำหนดไว้แล้วและพร้อมใช้งานโดยadd_meta_boxes
ฟังก์ชั่น action hook โปรดดูมุมมอง Adam Brown sorceของ hook การกระทำนี้ การใช้$post_type
ในกรณีนี้จะทำให้โค้ดเป็นอิสระจากpost_type
หน้าจอแก้ไขซึ่งหมายความว่าจะลบwpseo_meta
เมตาบ็อกซ์จากประเภทโพสต์ทั้งหมดที่พบในและจะไม่ส่งคืนสิ่งใดในกรณีที่wpseo_meta
ไม่พบ
post
post_type ซึ่งเป็นสาเหตุที่โซลูชันเริ่มต้นจะอนุญาตการควบคุมแบบละเอียด อย่างไรก็ตามในกรณีที่คุณต้องการลบมันสำหรับโพสต์ทุกประเภทแล้วใช้ var ที่กำหนดไว้แล้ว$post_type
เป็นที่น่าพอใจ สิ่งที่ฉันจะทำคือแก้ไขคำตอบของฉันเพื่อรวมตัวอย่างเพิ่มเติมของคุณโดยใช้$post_type
ตัวแปรสำหรับสถานการณ์ที่บางคนอาจต้องการใช้สิ่งนี้กับ post_types ที่ลงทะเบียนทั้งหมด
ลองวางในปลั๊กอินหรือรูปแบบ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');
คุณสามารถลบออกได้โดยใช้ฟังก์ชั่น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 ได้รับการเชื่อมโยง
คุณสามารถใช้ปลั๊กอินผู้ดูแลระบบเพื่อซ่อนรายการจากผู้ใช้โดยขึ้นอยู่กับบทบาทของพวกเขา ใช้สิ่งนี้เองเพื่อซ่อนบางสิ่งที่ Yoast SEO จากลูกค้าและทำให้ส่วนหลังง่ายขึ้น
http://wordpress.org/extend/plugins/adminimize/
ค่อนข้างตรงไปตรงมาเพื่อใช้โดยการเพิ่มตัวเลือก css สำหรับรายการที่คุณต้องการซ่อน ใช้เพื่อซ่อนแท็บ SEO Page Analysis (#linkdex)
มีตัวเลือกการตั้งค่าบน WordPress SEO โดย Yoast สำหรับการปิดใช้งานส่วนขั้นสูงของการตั้งค่า WordPress SEO สำหรับผู้ดูแลระบบที่ไม่ใช่ หากคุณต้องการปิดการใช้งานกล่องอย่างสมบูรณ์จากนั้นคุณสามารถใช้ปลั๊กอินอื่นเพื่อลบองค์ประกอบของหน้าบรรณาธิการโพสต์สำหรับผู้ดูแลระบบที่ไม่ใช่ผู้ดูแลเช่นลบกล่อง WordPress SEO จากเครื่องมือแก้ไขโพสต์สำหรับผู้ดูแลที่ไม่ใช่
yoast_is_toast()
สำหรับ