Bir kullanıcıyı yalnızca bir sayfayı düzenleyebilecek şekilde kısıtlamanın bir yolu (eklenti?) Var mı?


9

Wordpress'i bir CMS gibi kullanıyoruz ve kullanıcıların "ana sayfaya" sahip olmalarına izin vermek istiyoruz. İdeal olarak, tüm siteyi emmeleri engellenirdi.

Kullanıcıların düzenleme haklarını tek bir sayfa ile sınırlamanın basit bir yolu var mı?

Şu anda Üye eklentisini başka izin tabanlı şeyler yapmak için kullanıyorum , bu yüzden bir çözüm ya bunu düzgün bir şekilde artırabilir ya da tamamen değiştirebilirse harika olurdu.

Yeni bir kullanıcı oluşturulduğunda bir ana sayfanın otomatik olarak oluşturulması için bonus puanlar.


GÜNCELLEMELER: Bu sayfaların sitenin belirli bir alanıyla (yani aynı sayfanın tüm alt öğeleri) sınırlandırılması gerektiğini açıklığa kavuşturmalıyım. Ayrıca, bazı kullanıcılarla konuştuktan sonra, ana sayfalarından dallanan alt sayfalar oluşturmanın yararlı olduğunu düşünüyorlar.

Yanıtlar:


5

Temel bir WordPress kurulumu muhtemelen istediğinizi yapmaz. Çok siteli bir örnek oluşturabilir ve kullanıcıların kendi 'alt' sitelerine sahip olmalarına izin verebilir veya BuddyPress veya Mingle gibi bir kullanıcı profili özelliği olan bir şey kullanabilirsiniz.


4

Bunu yaptığım için üzgünüm, ama wordpress forumlarındaki cevapta karşılaştım .

Role Scoper'ın bunu gerçekten iyi yaptığı ortaya çıkıyor . Bu forum gönderisinin yazarı en iyi dedi:

Bir kullanıcının belirli bir sayfayı düzenlemesini sağlamak, ancak başka bir şeyi düzenlememek için:

  1. Aboneye WordPress rolü verin
  2. Yönet> Sayfalar> Sayfalarını düzenle
  3. "Gelişmiş Seçenekler" altındaki "Editörler" sekmesini genişletin
  4. Kullanıcı adınızın solundaki desteklenmemiş onay kutusunu işaretleyin (alt sayfalar oluşturulacaksa, geçerli veya gelecekteki tüm alt sayfalar için rol atanan hazır onaylı {{]} onay kutusunu da işaretleyin)
  5. Sayfayı Kaydet

Manuel bir işlem gibi geliyor. Binlerce kullanıcınız varsa?
MikeSchinkel

Bu kesinlikle doğru, ama şimdiye kadar en yakın. Ödülün sonuna kadar açık kalacağım.
Tom Wright

3

Sizinle aynı durumla karşı karşıya kaldım ve yaptığım şey "anasayfa" adlı özel bir yazı türü oluşturmak ve ayrıca kullanıcı başına her yazı türünün oluşturulmasını sınırlamak için "Bainternet Mesajları Oluşturma Sınırları" eklentisi oluşturmaktı. Deneyin http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/


Güzel basit bir yaklaşım. Post tabanlı olması ile ilgili küçük bir sorun - Sayfanın nerede olduğunu da sınırlamak istiyorum.
Tom Wright

sınır nerede? açıklamak ister misin?
Bainternet

Buradaki sorun, tüm kullanıcı sayfalarının aynı yerde olmasını istiyorum. Yani mysite.com/users/bob Plus, aynı stilde alt sayfalara da izin vermek istiyorum: mysite.com/users/bob/mysubpage
Tom Wright

2

Kullanıcı Erişim Yöneticisi Eklentisi bunu sizin için yapacak, diğer tüm yaklaşımlar çok karmaşık. UAM kolaydır, grupları kurun ve grubu alt sayfalarınıza hazır olarak atayın.



1

Çözüm, "normal" gönderi türlerinin (gönderi, sayfa) düzenlenmesini devre dışı bıraktığınızı gösterir.

O var değil gibi sert Düşündüğünüzden olarak. Anahtar olduğu kullanıcı girişi adı . Aynı şey taksonomiler ve hatta terimler için de yapılabilir.

Aşağıdakilere bakın (bir sorgu örneği de vardır):

// 1st: Add a post type for that user with it's 
//   user login & according capabilities 
function create_user_home() {
    global $current_user;
    get_currentuserinfo();

    register_post_type(
        'home_of_'.$current_user->user_login,
        array(
            'public' => true,
            'capability_type' => $current_user->user_login,
            'capabilities' => array(
                'publish_posts' => 'publish_'.$current_user->user_login,
                'edit_posts' => 'edit_'.$current_user->user_login,
                'edit_others_posts' => 'edit_'.$current_user->user_login,
                'delete_posts' => 'delete_'.$current_user->user_login,
                'delete_others_posts' => 'delete_others_'.$current_user->user_login,
                'read_private_posts' => 'read_private_'.$current_user->user_login,
                'edit_post' => 'edit_'.$current_user->user_login,
                'delete_post' => 'delete_'.$current_user->user_login,
                'read_post' => 'read_'.$current_user->user_login,
            ),
        )
    );
}
add_action( 'init', 'create_user_home' );

// A query could be done like this:
wp_reset_query(); // to be sure

global $wp_query, $current_user;
get_currentuserinfo();

$query_user_home = new WP_Query( array(
    ,'order'        => 'ASC'
    ,'post_type'    => 'home_of_'.$current_user->user_login
    ,'post_status'  => 'publish'
) );

if ( $query_user_home->have_posts() ) :
    while ( $query_user_home->have_posts() ) : $query_user_home->the_post();
        // check for password
        if ( post_password_required() ) :
            the_content();
        elseif ( !current_user_can('') ) :
            // display some decent message here
            return;
        else :

            // here goes your content

        endif;
    endwhile;

else : // else; no posts
    printf(__( 'Nothing from Mr./Mrs. %1$s so far.', TEXTDOMAIN ), $current_user->user_firstname.' '.$current_user->user_lastname);
endif; // endif; have_posts();

wp_rewind_posts(); // for a sec. query

Taksonomilerle bu daha da mantıklı olacaktır, çünkü yalnızca bu kullanıcı sınıflandırmalarından gelen terimlerle etiketlenen yayınları sorgulayabilirsiniz, ancak bunun kullanıcı sınıflandırma terimleriyle birlikte bir meta meta kutusu gerekir. Koşul aynı olur: kullanıcı giriş adı ve sadece sınıflandırma eklersiniz:

function create_user_tax() {
    if ( current_user_can("$current_user->user_login") ) :
        global $current_user;
        get_currentuserinfo();

        $singular = $current_user->user_login;
        $plural = $singular.'\'s';

        // labels
        $labels = array (
                 'name'         => $plural
                ,'singular_name'=> $singular
            );

        // args
        $args = array (
             'public'               => true
            ,'show_in_nav_menus'    => true
            ,'show_ui'              => true
            ,'query_var'            => true
            ,'labels'               => $labels
            ,'capabilities' => array(
                'manage_'.$current_user->user_login
            )
        );

        // Register
        register_taxonomy ( 
             $current_user->user_login
            ,array ( 'post', 'page' )
            ,$args
        ); 
        // Add to post type
        // you can even add your current user post type here
        register_taxonomy_for_object_type (
             $current_user->user_login
             ,array ( 'post', 'page', 'home_of_'.$current_user->user_login ) 
        );
    endif;
}
add_action( 'init', 'create_user_tax' );

Yetenek kontrolü (current_user_can) yerleşimi başka bir yerde de olabilir. Tüm özel ihtiyaçlarınıza bağlıdır. Sadece bunu emin olmak için: Bunlar bir çözüm yolunda size yol gösterecek örnekler. Umarım yardımcı olur :)


0

"Üyeler" ile benzer bir şey yaptım, özel bir yazı türü ve belirli bir üyeye el ile yazar haklarının atanması, çünkü küçük bir grup web sitesi, ama bazı dost basın destek iş parçacığında mümkün olduğunu okuduğumu hatırlıyorum kayıt işlemine bağlanmak için, bu nedenle, kayıt sırasında kullanıcı başına otomatik olarak bir sayfa / özel posta türü oluşturmanın ve o sayfayı yeni oluşturulan üyeye ana sayfa olarak atamanın mümkün olacağını varsayalım. Ayrıca Scribu'nun ön uç düzenleyicisini ekledim ve yöneticiyi olmayan üyelere arka ucu engelledim. Muhtemelen kayıt sırasında bir yönlendirme ekleyebilirsiniz, böylece yeni üyeler sayfalarına yönlendirilir (sanırım bazı varsayılan içerikler olabilir).

Buddypress destek parçacığını bulabilir miyim bakalım.

Ek - yazar seçicisinde yazı düzenleme alanında bir hata var. Şu anda üyelerin çözümünü zorlaştırabilecek standart izin sistemini kullanmamaktadır (yazarın sayfa oluşturmada atanması durumunda muhtemelen çalışacaktır). Tracte bir yama var, ama henüz çekirdeğe uygulandığını düşünmüyorum.


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.