WordPress SEO by Yoast: Yönetici Olmayanlar İçin Yazılarda Meta Kutuları Gizle


9

Çok yazarlı bir web sitem var ve tüm üyelerin yayınladıkları yayınlara SEO bilgilerini girmesine izin vermekten çok rahat değilim. Bunun yalnızca web sitesinin Yöneticisi tarafından görülebilir olmasını istiyorum. Herhangi bir fikir?

Yanıtlar:


19

Yoast SEO eklenti sitesindeki API belgelerinde ne IDolduğunu söylemedi yoas-plugin-dir/admin/class-metabox.phpve Yoast'ın bir kopyasını elden çıkarmadık , ancak 144 numaralı satıra göre , kayıtlı meta_box;

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

add_meta_boxesAynı dosyanın 32. satırındaki kancaya asılan ,

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

Tabii ki ID düzenleme sonrası ekranında meta kutusundan kendisi alabilirsiniz ... Neyse.

Aşağıdakileri yapabilirsiniz,

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');
    }
}

... burada yazı türü, bu kısıtlamayı uygulamak istediğiniz yazı türü, örneğin postbir veya daha fazla özel yazı türü!

Hile yapmalı.

güncelleme: değiştirilmiş manage_pluginsolmalıdır activate_plugins.


16
İçin +1 yoast_is_toast().
kaiser

@Ahmad M önerilen düzenleme için teşekkürler, ancak $post_typevar ve action argüman parametresi bu durumda gerekli değildir ve uyarı / hata atmaz. Ayrıca $post_typevar eklerseniz, başka bir yerde yapmadığınız fonksiyon içinde yazı türünü tanımlamanız gerekir, bu yüzden kullanıcı yanlış çalışması için bunu çalıştırmak olurdu! Bu durumda, yazı tipi adını 'post'doğrudan remove_meta_boxişleve geçirmek gibi kabul edilebilir . Yine de öneri için teşekkürler.
Adam

@userabuser: Açıklama için teşekkürler, ancak $post_typezaten add_meta_boxeseylem kanca işlevleri tarafından tanımlanmış ve kullanılmaya hazır , lütfen bu eylem kancasının Adam Brown sorce görünümüne bakın . Yararlanma $post_typebu durumda kod bağımsız hale getirecek post_typeonu kaldıracaktır anlamına düzenleme ekranından wpseo_metameta kutusu tüm bu bulunur sonrası türleri ve durumda hiçbir şey dönecektir wpseo_metabulunamadı.
Ahmad M

@AhmadM Teşekkürler dostum. Zaten tanımlanmış var farkındayız, ancak bu kanca / işlev geçmek için gerekli kılmaz. Bu durumda OP, meta kutuyu postpost_type'den kaldırmak istemektedir, bu nedenle ilk çözüm parçalı kontrole izin verecektir. Ancak, tüm yazı türleri için kaldırmak istediğiniz durumda, önceden tanımlanmış var $post_typekullanmak tatmin edicidir. Yapacağım şey, $post_typebirisinin bunu tüm kayıtlı post_tiplere uygulamak isteyebileceği durumlar için değişkeni kullanarak ek örneğinizi içerecek şekilde cevabımı düzenlemek .
Adam

5

Bunu WordPress SEO eklentisine ( API Docs ) göre Yoast tarafından bir eklenti veya tema functions.phpdosyasına yapıştırmayı deneyin .

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

Herhangi bir hatayı önlemek için ... Bu, bir şeyleri gizlemeye çalışmadan önce eklentiyi devre dışı bırakmanıza ve hata atmanıza izin vermeden önce işlevin var olup olmadığını kontrol eder.

Bunun initdüzgün bir şekilde çalışması için içine girmeniz gerekebilir , ki bu böyle yapılabilir:

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 işlevini kullanarak kaldırabilirsiniz .

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 dikkat edin, bu WP SEO meta kutusu kanca sonra yapılır emin olun.


2

Rollerine bağlı olarak öğeleri kullanıcılardan gizlemek için Yönetici eklentisini kullanabilirsiniz. Bu kendimi bazı Yoast SEO şeyler istemcilerden gizlemek ve arka ucunu basitleştirmek için kullandım.

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

Gizlemek istediğiniz öğeler için css seçicileri ekleyerek kullanımı oldukça basittir. SEO Sayfa Analizi sekmelerini gizlemek için kullandınız (#linkdex)


0

İyi olmayan yöneticiler için WordPress SEO ayarlarının gelişmiş bölümünü devre dışı bırakmak için Yoast tarafından WordPress SEO'da bir ayar seçeneği var. Kutuyu tamamen devre dışı bırakmak istiyorsanız, yönetici olmayanlar için yazı düzenleyici sayfa öğelerini kaldırmak için diğer eklentileri kullanabilirsiniz, örneğin WordPress SEO kutusunu yönetici olmayanlar için yazı düzenleyiciden kaldırmak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.