Există vreo modalitate (un plugin?) de a restricționa un utilizator să editeze doar o singură pagină?
Folosim WordPress ca un CMS și am dori să permitem utilizatorilor să aibă o "pagină de start". În mod ideal, am dori să îi împiedicăm să modifice întregul site.
Există o modalitate simplă de a limita drepturile de editare ale utilizatorilor la o singură pagină?
În prezent folosesc plugin-ul Members pentru alte funcționalități bazate pe permisiuni, așa că ar fi ideal dacă o soluție s-ar integra bine cu acesta sau l-ar înlocui complet.
Bonus pentru crearea automată a unei pagini de start când este creat un nou utilizator.
ACTUALIZARE: Trebuie să clarific că aceste pagini trebuie să fie limitate la o anumită zonă a site-ului (adică toate copiii aceleiași pagini). De asemenea, după discuții cu utilizatorii, pare că le-ar fi util să poată crea subpagini care să se ramifice din pagina lor de start.

O instalare de bază a WordPress probabil nu va face exact ceea ce doriți. Ați putea configura o instanță multi-site și permiteți utilizatorilor să aibă propriul lor 'sub' site, sau să folosiți ceva precum BuddyPress sau Mingle care au o funcționalitate de profil utilizator.

Îmi pare rău că trebuie să fac asta, dar am dat peste răspuns pe forumurile WordPress.
Se pare că Role Scoper face acest lucru foarte bine. Autorul acelui post de forum a spus-o cel mai bine:
Pentru a permite unui utilizator să editeze o anumită pagină, dar nimic altceva:
- Acordați-i un rol WordPress de Abonat
- Gestionare > Pagini > Editați pagina lor
- Extindeți fila "Editori" din sub "Opțiuni Avansate"
- Bifați caseta de selectare fără acolade din stânga numelui utilizatorului (dacă vor fi create pagini copil, bifați și caseta cu acolade {[]}, care atribuie rolul pentru toate paginile copil actuale sau viitoare)
- Salvați Pagina

Am întâmpinat aceeași situație ca tine și ceea ce am făcut a fost să creez un tip de postare personalizat numit "pagina principală" și, de asemenea, am creat plugin-ul "Bainternet Posts Creation Limits" pentru a limita crearea fiecărui tip de postare per utilizator. Încearcă-l http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/

Abordare simplă și drăguță. Mică problemă cu faptul că este bazată pe postări - vreau de asemenea să limitez unde se află pagina.

Deci problema aici este că vreau să am toate paginile utilizatorilor în același loc. Adică mysite.com/users/bob În plus, vreau să permit și subpaginile în același stil: mysite.com/users/bob/mysubpage

Aș folosi Capability Manager sau aș verifica rolurile și capabilitățile în codex pentru a face acest lucru.

Soluția presupune că ai dezactivat editarea tipurilor de postări "normale" (post, page).
Nu este atât de greu pe cât ai putea crede. Cheia este numele de utilizator (user login name). Același lucru s-ar putea face și cu taxonomiile sau chiar termenii.
Vezi următorul exemplu (există și un exemplu pentru query):
// 1st: Adaugă un tip de postare pentru acel utilizator cu
// numele său de utilizator și capacitățile corespunzătoare
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' );
// Un query ar putea fi făcut astfel:
wp_reset_query(); // pentru a fi siguri
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();
// verifică parola
if ( post_password_required() ) :
the_content();
elseif ( !current_user_can('') ) :
// afișează un mesaj decent aici
return;
else :
// aici vine conținutul tău
endif;
endwhile;
else : // altfel; nicio postare
printf(__( 'Nimic de la Dl./Dna. %1$s până acum.', TEXTDOMAIN ), $current_user->user_firstname.' '.$current_user->user_lastname);
endif; // endif; have_posts();
wp_rewind_posts(); // pentru un al doilea query
Cu taxonomii, acest lucru ar avea și mai mult sens, deoarece ai putea interoga doar postările care sunt etichetate cu termeni din taxonomiile acestui utilizator, dar asta ar necesita o cutie meta pentru postări cu termenii taxonomiei utilizatorului. Condiția ar fi aceeași: numele de utilizator și ai adăuga doar taxonomia:
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';
// etichete
$labels = array (
'name' => $plural
,'singular_name'=> $singular
);
// argumente
$args = array (
'public' => true
,'show_in_nav_menus' => true
,'show_ui' => true
,'query_var' => true
,'labels' => $labels
,'capabilities' => array(
'manage_'.$current_user->user_login
)
);
// Înregistrează
register_taxonomy (
$current_user->user_login
,array ( 'post', 'page' )
,$args
);
// Adaugă la tipul de postare
// poți adăuga chiar și tipul de postare al utilizatorului curent aici
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' );
Poziționarea verificării capacității (current_user_can) ar putea fi și în altă parte. Totul depinde de nevoile tale specifice. Doar pentru a fi siguri: Acestea sunt exemple care te ghidează pe drumul către o soluție. Sper că te ajută :)

Am făcut ceva similar cu "membri", un tip de postare personalizată, și o atribuire manuală a drepturilor de autor pentru un membru specific, deoarece este un site web pentru un grup mic, dar îmi amintesc că am citit pe un forum de suport BuddyPress că este posibil să modifici procesul de înscriere. Presupun că ar fi posibil să creezi automat o pagină/tip de postare personalizată pentru fiecare utilizator la înscriere și să atribui acea pagină specifică noului membru ca pagină de pornire. De asemenea, am adăugat editorul front-end al lui Scribu și am blocat accesul la backend pentru membrii care nu sunt administratori. Probabil că poți adăuga și o redirecționare la înscriere, astfel încât noii membri să fie direcționați către pagina lor (care, presupun, ar putea avea un conținut implicit).
Voi încerca să găsesc acel fir de discuție din suportul BuddyPress.
Adendum - există o eroare în selectorul de autor din câmpul de editare a postării. În prezent, nu utilizează sistemul standard de permisiuni, ceea ce poate face soluția cu membri mai dificilă (deși probabil va funcționa dacă autorul este atribuit la crearea paginii). Există un patch în Trac, dar nu cred că a fost încorporat în nucleul principal încă.

acest lucru este posibil cu plugin-ul s2member, versiunea gratuită este suficientă. Am creat o zonă de clienți unde fiecare client are un URL există un tutorial video aici: http://www.primothemes.com/forums/viewtopic.php?f=4&t=586&start=0&hilit=client+area
