Apakah ada cara (plugin?) Untuk membatasi pengguna agar dapat mengedit hanya satu halaman?


9

Kami menggunakan wordpress seperti CMS dan sangat ingin memungkinkan pengguna untuk memiliki "beranda". Idealnya mereka dicegah untuk tidak mengotori seluruh situs.

Apakah ada cara sederhana untuk membatasi hak pengguna untuk mengedit satu halaman?

Saat ini saya menggunakan plugin Anggota untuk melakukan hal-hal berbasis izin lainnya, jadi alangkah baiknya jika sebuah solusi dapat menambah ini dengan rapi, atau menggantinya seluruhnya.

Poin bonus untuk pembuatan beranda otomatis saat pengguna baru dibuat.


PEMBARUAN: Saya harus mengklarifikasi bahwa halaman-halaman ini harus terbatas pada area spesifik situs (yaitu semua anak-anak dari halaman yang sama). Selain itu, setelah berbicara dengan beberapa pengguna, tampaknya mereka merasa berguna untuk membuat sub-halaman yang bercabang dari halaman muka mereka.

Jawaban:


5

Instalasi WordPress dasar mungkin tidak akan melakukan apa yang Anda inginkan. Anda dapat mengatur turunan multi-situs dan memungkinkan pengguna untuk memiliki situs 'sub' sendiri, atau menggunakan sesuatu seperti BuddyPress atau Mingle yang memiliki fitur profil pengguna.


4

Maaf melakukan ini, tetapi saya menemukan jawaban di forum wordpress .

Ternyata Peran Scoper melakukan ini dengan sangat baik. Penulis posting forum itu mengatakan yang terbaik:

Untuk memungkinkan pengguna mengedit satu halaman tertentu, tetapi tidak hal lain:

  1. Beri mereka peran WordPress dari Pelanggan
  2. Kelola> Halaman> Edit halaman mereka
  3. Luaskan tab "Editor" di bawah "Opsi Lanjut"
  4. Centang kotak non-brace di sebelah kiri nama pengguna Anda (jika halaman anak akan dibuat, centang juga kotak centang bracing {[]}, yang menetapkan peran untuk semua halaman anak saat ini atau di masa mendatang)
  5. Simpan Halaman

Kedengarannya seperti proses manual. Bagaimana jika Anda memiliki ribuan pengguna?
MikeSchinkel

Itu memang benar, tetapi sejauh ini yang terdekat. Saya akan menjaga karunia terbuka sampai akhir.
Tom Wright

3

Saya menghadapi situasi yang sama dengan Anda dan apa yang saya lakukan adalah membuat jenis posting khusus bernama "beranda" dan juga membuat plugin "Bainternet Posts Creation Limits" untuk membatasi pembuatan setiap jenis posting per pengguna. Cobalah http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/


Pendekatan sederhana yang bagus. Sedikit masalah dengan postingan - saya juga ingin membatasi di mana halaman tersebut berada.
Tom Wright

membatasi di mana halaman itu? mau menjelaskan?
Bainternet

Jadi masalahnya di sini adalah saya ingin memiliki semua halaman pengguna di tempat yang sama. Yaitu mysite.com/users/bob Plus, saya juga ingin mengizinkan sub-halaman dengan gaya yang sama: mysite.com/users/bob/mysubpage
Tom Wright

2

Plugin User Access Manager akan melakukan ini untuk Anda, semua pendekatan lain terlalu rumit. UAM mudah, atur grup dan tetapkan grup ke sub-halaman Anda, siap.



1

Solusi ini menyiratkan bahwa Anda telah menonaktifkan pengeditan jenis posting "normal" (posting, halaman).

Ini tidak sesulit yang Anda yakini. The key adalah nama user login . Hal yang sama dapat dilakukan dengan taksonomi atau bahkan persyaratan.

Lihat yang berikut (ada contoh untuk kueri juga):

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

Dengan taksonomi, ini bahkan lebih masuk akal, karena Anda hanya dapat meminta posting yang ditandai dengan istilah dari taksonomi pengguna ini, tetapi itu akan membutuhkan kotak meta pos dengan istilah taksonomi pengguna. Kondisinya akan sama: nama login pengguna dan Anda baru saja menambahkan taksonomi:

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

Penempatan pemeriksaan kemampuan (current_user_can) juga bisa di tempat lain. Tergantung semua kebutuhan spesifik Anda. Hanya untuk memastikan ini: Ini adalah contoh untuk membimbing Anda dalam perjalanan menuju solusi. Semoga itu bisa membantu :)


0

Saya telah melakukan sesuatu yang mirip dengan "anggota", jenis posting kustom, dan penugasan manual hak penulis untuk anggota tertentu, karena ini adalah situs web grup kecil, tapi saya ingat pernah membaca di beberapa utas dukungan pers teman bahwa mungkin saja untuk menghubungkan ke proses pendaftaran, jadi saya kira mungkin untuk secara otomatis membuat halaman / jenis posting kustom per pengguna pada saat mendaftar dan menetapkan halaman tertentu untuk anggota yang baru dibuat sebagai beranda. Saya juga menambahkan editor front-end Scribu dan memblokir backend untuk anggota yang bukan admin. Anda mungkin juga dapat menambahkan pengalihan pada pendaftaran sehingga anggota baru diarahkan ke halaman mereka (yang, saya kira, dapat memiliki beberapa konten default).

Saya akan melihat apakah saya dapat menemukan utas dukungan buddypress itu.

Adendum - ada bug di pemilih penulis di bidang pos edit. Saat ini tidak menggunakan sistem izin standar, yang dapat membuat solusi anggota lebih sulit (meskipun mungkin akan berfungsi jika penulis ditugaskan pada pembuatan halaman). Ada tambalan di trac, tapi saya tidak berpikir itu sudah diterapkan ke inti.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.