it-swarm.asia

Bir kullanıcının yalnızca bir sayfayı düzenlemesini sınırlamanın bir yolu var mı (eklenti?)?

Bir CMS gibi wordpress kullanıyoruz ve kullanıcıların bir "ana sayfaya" sahip olmalarına izin vermek istiyoruz. İdeal olarak, tüm siteyi doldurmaları engellenir.

Kullanıcıların düzenleme haklarını tek bir sayfala sınırlandırmanın basit bir yolu var mı?

Şu anda Üyeler eklentisini başka izin tabanlı işler yapmak için kullanıyorum, bu nedenle bir çözümün bunları düzgün şekilde artırması veya tamamen değiştirmesi harika olurdu.

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


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

9
Tom Wright

Bunu yaptığım için özür dilerim, ancak - wordpress forumlarında .

Görünüşe göre Rol Scoper bunu gerçekten iyi yapıyor. Bu forum gönderisinin yazarı en iyisini söyledi:

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

  1. Onlara bir WordPress Abone rolü verin
  2. Yönet> Sayfalar> Sayfalarını düzenle
  3. "Gelişmiş Seçenekler" in altındaki "Editörler" sekmesini genişletin
  4. Kullanıcınızın adının solundaki köşeli olmayan onay kutusunu işaretleyin (alt sayfalar oluşturulacaksa, tüm geçerli veya gelecekteki alt sayfaların rolünü atayan destekçi onay kutusunu {[]} da işaretleyin)
  5. Sayfayı Kaydet
4
Tom Wright

Temel bir WordPress kurulumu muhtemelen istediğinizi yapmaz. Çok siteli bir örnek oluşturabilir ve kullanıcıların kendi 'alt' sitelerini kullanmalarına izin verebilir veya bir kullanıcı profili özelliğine sahip BuddyPress veya Mingle gibi bir şey kullanmalarını sağlayabilirsiniz.

5
Norcross

Sizinle aynı durumla karşılaştım ve yaptığım "ana sayfa" adlı özel bir yazı tipi oluşturmaktı ve ayrıca kullanıcı başına her yazı türünün oluşturulmasını sınırlamak için "Bainternet Posta Oluşturma Sınırları" eklentisini oluşturdum. Deneyin http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/

3
Bainternet

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ırlayın.

2
BUGHUNTER

Çözüm, "normal" yazı türlerinin (posta, sayfa) düzenlenmesini devre dışı bıraktığınızı belirtir.

Bu değil inandığınız kadar zor. key kullanıcı oturum açma adı 'dir. Aynısı taksonomiler veya hatta terimlerle yapılabilir.

Aşağıdakine bakın (bir sorgu için de bir örnek var):

// 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

Taksonomilerde bu daha mantıklı olur, çünkü yalnızca bu kullanıcıların taksonomilerindeki terimlerle etiketlenmiş gönderileri sorgulayabilirsiniz, ancak bunun için kullanıcıların taksonomisi terimlerini içeren bir meta kutusu gerekir. Koşul aynı olurdu: kullanıcı girişi adı ve sadece taksonomisini ekleyeceksiniz:

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 denetiminin (current_user_can) yerleşimi de başka bir yerde olabilir. Özel gereksinimlerinize bağlı. Sadece emin olmak için: Bunlar sizi bir kirliliğe götürürken yönlendirecek örneklerdir. Umarım yardımcı olur :)

1
kaiser

Bunu yapmak için Capability Manager veya kodeks içindeki rolleri ve yetenekleri kontrol ederim.

1
Ben West

bu eklenti s2member ile mümkündür, ücretsiz sürümü yeterli. Burada her müşterinin bir URL’si olduğu bir video eğitimi veren bir müşteri alanı oluşturdum: http://www.primothemes.com/forums/viewtopic.php?f=4&t=586&start=0&hilit=client+area

0
paul

Küçük bir grup web sitesi olduğundan "üyeler", özel bir gönderi türü ve belirli bir üyeye manuel olarak yazar hakları atamasıyla benzer bir şey yaptım, ancak bazı dostluk basın destek işlerinde mümkün olduğunu okudum Kayıt işlemine bağlanmak için, üye olunca kullanıcı başına otomatik olarak bir sayfa/özel yazı türü oluşturmak ve bu belirli sayfayı yeni oluşturulan üyeye ana sayfa olarak atamak mümkün olur. Ayrıca Scribu'nun ön-editörünü de ekledim ve arka planı yönetici olmayan üyelere bloke ettim. Muhtemelen kayıt sırasında bir yönlendirme de ekleyebilirsiniz, böylece yeni üyeler sayfalarına yönlendirilir (sanırım bazı varsayılan içerikler olabilir).

Bakalım dostum destek parçasını bulabilecek miyim.

Zeyilname - yazar seçicisinde yayın düzenle alanında bir hata var. Şu anda standart izin sistemini kullanmıyor ve bu da üyelerin çözümünü daha da zorlaştırabilir (yazarın sayfa oluşturma işlemine atanmış olması durumunda çalışacak olmasına rağmen). Trac'de bir yama var, ama henüz çekirdeğe uygulandığını sanmıyorum.

0
user2789