Üyenin yalnızca özel gönderi türüne erişmesine izin ver. Yalnızca kendi yayınlarını düzenleme izni


29

Tamam, buna saldırmanın en iyi yolunu arıyorum.

PHP ile çok rahatım ve WordPress'te özel meta alanları olan özel yazı tipleri yapıyorum.

İşte bakıyorum ne yapıyorum:

  1. Kullanıcı kaydeder ve varsayılan olarak abone olarak ayarlanmıştır.
  2. Kullanıcıdan yönetici tarafından özel yazı tipine izin verilmesini ister.
  3. Yönetici, kullanıcıyı "Mağaza Sahibi" gibi başka bir izin adına atar.
  4. Kullanıcı artık özel yazı tipini görebilir ve bu yazı tipine giriş yapabilir.
  5. Kullanıcı yalnızca kendi gönderisini görebilir ve düzenleyebilir.

Aşağıdaki konularda yardıma ihtiyacım var:

  1. "Mağaza Sahibi" adı verilen yeni bir "Rol" nasıl oluşturulur?
  2. Belirtilen role yalnızca özel yazı türünü görmek ve erişmek için doğru iznin nasıl verileceği.
  3. Kullanıcının yalnızca bu özel yazı türündeki kendi yayınlarını görmesine ve düzenlemesine izin verin.

İdeal olarak bunların hepsinin wp-admin tarafından yapılmasını tercih ederim ama sanırım peşimdeki sonlu kontrolü elde etmek için bunun için bir ön uç kurmam gerekebilir.

Herhangi bir giriş büyük beğeni topluyor.

Saygılarımla

Yanıtlar:


21

Justin Tadlock'un eklentisini kullan " Üyeler " kullanın. Size yeni roller oluşturma, mevcut rolleri düzenleme ve özel yetenekler ekleme yeteneği verir. Yapmanız gereken tüm işler birkaç tıklamayla sonuçlandırılabilir.

ZaMoose'un cevabı hakkındaki yorumunda 'işlevselliği kendim yazmayı istediğin için her şey üzerinde tam kontrolüm olduğunu' söylediğini biliyorum. Açık kaynaklı yazılımın tüm noktasını kaçırıyor. Justin Tadlock eklentisini piyasaya sürdü, böylece tam olarak kullanabiliyordunuz, böylece her şey üzerinde tam kontrol sahibi olacaksınız.

Eğer gerçekten gerçekten potansiyel kendi zamanında yüzlerce saat israf, tekerleği yeniden icat etmek istiyorum seni durduramayız, ama en azından kendine tasarrufu sorun ve kullanım Tadlock en eklentisi istediğini nasıl yapılacağını öğrenmek için olabilir.

İstediğinizi yapan bir eklentiye sahip olduğunuzda, yazı tipi kayıt işlevindeki bayrağı ve 'map_meta_cap'bayrağı değiştirmeniz gerekir; böylece 'yazı', 'sayfa' veya başka bir 'ayrılmış' dışında bir şey söyler. yazın. Daha sonra, mesajların (örneğin ilgili tüm yeteneklerini çoğaltmak , , mesajların yerine yeteneği türünü kullanarak, vs.). Tüm bu izinleri yöneticilere atadığınızdan emin olun (bunu yapana kadar yazının türünü göremezsiniz), sonra rolünüzü oluşturun, yazıcınızın 'katkıda bulunan' rolünün yeteneklerini taklit edin.true'capability_type'edit_postsedit_others_postspublish_posts

Örneğin, yetenek tipi olduğunu söylemek foobars, sen vermek 'dükkan sahiplerini' isteyeyim edit_foobars, delete_foobarsve readyetenekleri. Bu şekilde kendi taslak foobarlarını oluşturabilirler ve bu taslakları silebilirler, ancak publish_foobarsyetenekleri olmadığı için onay için göndermeleri gerekir. Sahip olmadıkları edit_published_foobarsiçin, onaylanmış bir foobardaki tüm değişikliklerin onaylanması gerekir.


Tamam, şimdi üye izinlerinin nasıl çalıştığı hakkında bir fikir edinmek için Üyeler eklentisini kullanmak im. Ayarladım 'map_meta_cap' => trueve 'capability_type' => 'shopowner'özel yazı tipimi yazdım. ShopOwnerAdlı yeni bir rol yarattım ve buna okuma, edit_shopowner, delete_shopowner yeteneklerini verdim. Bir kullanıcıyı ShopOwner rolüne ayarlayın ve bu kullanıcıyla oturum açın. Bu kullanıcı özel yayın türünü göremiyor. Bir şey mi kaçırdım?
Brady

2
Bunları edit_shopownersve olarak değiştir delete_shopowners. edit_shopownerve delete_shopownerasla kontrol edilemeyen meta yetenekler. Biri belirli bir öğeyi düzenlemeye veya silmeye çalıştığında kontrol edilir ve "Bu kullanıcı bu tür öğeleri silebilir mi? Yalnızca kendilerini veya başkalarını da silebilir mi? Yayınlanan öğeleri silebilir mi?" vs.
John P Bloch

Bundan hiçbir şey anlayamadım ... ama benim özel yazı tipimde yetenekler ayarlayarak ve üyeler eklentisinde bu yetenekleri yaratarak takip ettiğim işlevselliği elde ettim. Size bir çözüm bulmam için gönderiminiz en kullanışlı olduğu için cevapları verdim. Teşekkürler
Brady

19

Kayıt sonrası türü, "yetenekler" olarak adlandırılan bir parametreye sahiptir;

'capability' => 'organize_shop',

http://codex.wordpress.org/Function_Reference/register_post_type

Yeni bir kullanıcı / rol / yetenek oluşturmak için, başlamak için basit bir örnek olarak, add_role, add_cap kullanabilirsiniz.

// Add the role to WordPress list of roles
// Then add the capability 'organize_shop' to the 'shop_owner' role
$role = add_role( 'shop_owner', 'Shop Owner', ['edit_posts' => true]));
$role->add_cap( 'organize_shop' );


// If 'shop_owner' already exists make `$wp_roles` visible then 
// add the capability 'organize_shop' to the 'Show Owner' role
public $wp_roles;
$wp_roles->add_cap( 'shop_owner', 'organize_shop' );

hmm ... Biraz kafam karıştı 2 ve 3 satır arasındaki fark nedir? : S 'Mağaza Sahibi' rolüne aynı yeteneği katmıyor mu?
dashaluna 13:11

Evet onlar aynıdır ancak bunu yapmanın farklı yollarını gösterirler; birincisi ilk parametre olarak (Dükkan Sahibi), ikincisi ise $ rolünü kullandığı için sadece üstteki rolü içerir.
Wyck

3
Yetenek / izin tercüme etmeniz gerekiyor mu? bu __ ('');
Svetoslav Marinov

@SvetoslavMarinov Ben çeviriyi kaldırmak için cevabı düzenledi.
MikeSchinkel

@ dashaluna Cevabı netleştirmek için düzenledim.
MikeSchinkel

1

Gerçek içerik sunumunu işlemek için Gravity Formlarına veya TDO Mini Formlarına bakmayı düşündünüz mü ? Her biri, kullanıcı tarafından gönderilen içeriği akıllıca ele almanıza yol açan yolda size yardımcı olacak işlevselliğe sahiptir.


Yanıtladığınız için teşekkürler ama bunlar aradığım şey değil. Temelde bunlar eklentiler olduğu için. İşlevselliği kendim yazmayı düşünüyorum, bu yüzden her şey üzerinde tam kontrolüm var.
Brady,

0

"Advance Access Manager" adında bir eklenti yükleyerek bunun nasıl başarılabileceğinin daha kolay ve etkili bir yolu olarak, işlevselliği yazmak zorunda kalmayacaksınız, ancak kullanıcılar, roller ve ne yapabilecekleri üzerinde hala iyi bir kontrol seviyesi var. İstediğiniz şeylerin çoğu bu eklentiyle elde edilebilir.

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.