Bir Kullanıcı Rolüne Yetenek Nasıl Eklenir?


14

Bir Wordpress ağını yönetiyorum ve unfiltered_html kullanıcı özelliğini Yönetici'nin önceden tanımlanmış kullanıcı rolüne eklemek istiyorum. Wordpress'in standart bir kurulumunda Yönetici hesabı zaten bu özelliğe sahip olurdu, ancak bir MU kurulumunda bu yetenek sadece Süper Yöneticiler tarafından karşılanmaktadır. Wordpress Rolleri ve Yetenekleri .

Yönetici rolünü bir tema veya eklenti içinden nasıl artırabilirim?


1
wordpress.org/extend/plugins/unfiltered-mu yardımcı olabilir gibi görünüyor. Ancak yöneticiler ve editörler için çalışır. Bu istenmiyorsa belki kod biraz düzeltilebilir?
Rev. Voodoo


@Rev. Voodoo Öneri için teşekkürler. Bu unfiltered_html Yönetici veya Süper yönetici sonrası yerleştirmeler yeteneği dışında bir role izin vermek yeterli değildir anahtar / un filtreleme oldu vs. yeteneği ekleyerek Wordpress' KSES çengel gibi konuyla biraz ışık tutmak yardımcı: kses_remove_filters ()
Jonnybojangles

Ayrıntılı bir blog: goo.gl/xNuafH
Suresh Kamrushi

Yanıtlar:


14

WP_Role sınıfını kullanabilirsiniz ,

// get the the role object
$role_object = get_role( $role_name );

// add $cap capability to this role object
$role_object->add_cap( $capability_name );

// remove $cap capability from this role object
$role_object->remove_cap( $capability_name );

Bu nedenle, Yöneticilerin yazı içeriğine SCRIPT ve IFRAME etiketlerini girmesini sağlama hakkındaki orijinal sorunuzu ele almak için, Multisite'te yalnızca Süper Yöneticilere verilen 'unfiltered_html' özelliğini arıyorsunuz.

// get the the role object
$admin_role = get_role( 'administrator' );
// grant the unfiltered_html capability
$admin_role->add_cap( 'unfiltered_html', true );

veya bunu işlevlerinizde bir kez çalıştırabilirsiniz:

/* Roles & Capabilities */
add_role('professional', 'Professional User', array(
    'read' => true, // True allows that capability, False specifically removes it.
    'edit_posts' => true,
    'delete_posts' => true,
    //'edit_published_posts' => true,
    //'publish_posts' => true,
    //'edit_files' => true,
    'upload_files' => true //last in array needs no comma!
));

Teşekkürler Philip. WP_Role sınıfı ile ilgili olarak, kod ne zaman çalıştırılmalıdır? Bunun küresel rol nesnesini etkilediğini tahmin ediyorum. İşlevlerim dosyasında bir kez çalıştırabileceğimi belirten ikinci kod bloğunu getirdiğinize sevindim. Bazı Wordpress destek forumlarında benzer çözümler buldum, ancak bir tema veya eklentide bir kez kod çalıştırmak için garip buluyorum. Özellikle değişiklik zaten olup olmadığını kontrol etmeden. Belki de rol yazma aslında ihmal edilebilir. Yeteneği kontrol etmek için ilk örneğinizin gösterdiği gibi, rolü role yazın.
Jonnybojangles

Ayrıca, bize anlatacak bir anınız olursa WP_Role sınıfını nasıl uygulayacağınızla da ilgileniyorum. Teşekkürler
Osu

1
@Jonnybojagles & @Osu, şuna bir bakın: Roller ve Yetenekler İçin
Philip

Bu makaleyi peşimde okumuştum, ama hepsini tekrar gözden geçirme fırsatını aldım, teşekkür ederim! Sonunda, filtre uygulanmamış-mu (yukarıda Rev. Voodoo tarafından belirtilmiştir) eklentisini inceledikten sonra sonunda yetenekler ekleyerek rol değiştirmenin yeterli olmadığını öğrendim. Wordpress KSES filtrelerinin filtresini kaldırmam gerekiyordu.
Jonnybojangles

Dizilerdeki son öğeye virgül eklemeyi tercih ederim. Kodun çalışması gerekmediği veya hata (lar) ile sonuçlanmadığı için ilgisiz görünse de, değişiklikleri görselleştirirken bir sürüm kontrolü kullanılırken kullanışlı olur; eski bir dizi öğe satırının silindiğini, yeniden eklendiğini ve yeni olarak vurgulandığını görmezsiniz, yalnızca bu satır için ekleme veya değişiklik olarak virgül kullanılır. Çok az olsa da, değişiklikleri analiz ederken çok zaman kazanmanıza yardımcı olur.
nyedidikeke

2

Süper Yönetici veya Yönetici dışında başka bir role izin vermek için (Wordpress kurulumunun bir ağ / MU örneği olup olmadığına bağlı olarak) bir mesaja veya yoruma filtre uygulanmamış html eklemek için Wordpress 'KSES filtresinin kaldırılması gerekir.

Kullanıcının belirli bir özelliği olup olmadığını kontrol edin.

if ( current_user_can( 'unfiltered_html' ) ) {  }

Öyleyse KSES'i kaldırmaktan

kses_remove_filters();

Bu işlevsellik zaten filtrelenmemiş-mu ile paketlenmiştir ve yöneticilerin ve editörlerin filtrelenmemiş html eklemesine izin verir.


İşlevsellik ayrıca bir eklenti kaydına sarılır ve mantığın her WP örneğinde önceden oluşturulması gerekmez.
Jonnybojangles
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.