C'è un modo (plug-in?) Di limitare a un utente di essere in grado di modificare una sola pagina?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/1736

Domanda

Usiamo wordpress come un CMS e sarebbe molto simile per consentire agli utenti di avere una "home page". Idealmente avrebbero impedito di pasticciare l'intero sito.

C'è un modo semplice per gli utenti limite di editing diritti di una singola pagina?

Attualmente sto usando i plug per fare altre cose permission-based , quindi sarebbe bello se una soluzione potrebbe o ordinatamente aumentare questo, o sostituire del tutto.

I punti di bonus per la creazione automatica di una home page quando viene creato un nuovo utente.


AGGIORNAMENTI: vorrei chiarire che queste pagine hanno bisogno di essere limitato ad una specifica area del sito (vale a dire tutti i bambini della stessa pagina). Inoltre, dopo aver parlato con alcuni utenti sembra che avrebbero trovato utile creare pagine secondarie ramificazione dalla loro home page.

È stato utile?

Soluzione 2

Siamo spiacenti per fare questo, ma mi sono imbattuto la risposta nei forum wordpress .

Si scopre che Ruolo Scoper fa davvero bene. L'autore di questo post sul forum ha detto meglio:

Per consentire a un utente di modificare una pagina particolare, ma non niente altro:

  1. Date loro un ruolo di WordPress Subscriber
  2. Gestisci> Pagine> Modifica sua pagina
  3. Espandi la scheda "Editors" sotto "Opzioni avanzate"
  4. Selezionare la casella di controllo non-rinforzato a sinistra del nome del vostro utente (se verranno create pagine figlio, di controllare anche la casella di controllo Braced {[]}, che assegna il ruolo per tutte le pagine figlio attuali o futuri)
  5. Salvare la pagina

Altri suggerimenti

L'installazione di base di WordPress probabilmente non fare ciò che si desidera. Si potrebbe impostare un'istanza multi-sito e consentire agli utenti di avere il proprio sito 'sub', o l'uso qualcosa come BuddyPress o si mescolano, che ha una funzione di profilo utente.

I affrontato la stessa situazione di voi e ciò che ho fatto è stato creare un tipo di messaggio personalizzato denominato "home page" e ha anche creato 'Limiti Bainternet Messaggi Creazione' plugin per limitare la creazione di ogni tipo di posta per utente. Provalo http://wordpress.org/extend/plugins/bainternet-posts -Creazione termini /

L'utente Access Manager plugin farà questo per voi, tutti gli altri approcci sono troppo complicato. UAM è solo facile, gruppi di impostazione e assegnare il gruppo alle tue pagine secondarie, pronto.

mi piacerebbe utilizzare il Capability Direttore dell'arrivo o della partenza ruoli e le capacità in codice al fine per fare questo.

I implys sollution che è stata disattivata la redazione di "normali" tipi postali (posta, pagina).

E ' non così difficile come si possa credere. Il tasto è il nome di login dell'utente . Lo stesso potrebbe essere fatto con tassonomie o termini anche.

vedere il seguente (c'è un esempio per una query troppo):

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

Con tassonomie questo sarebbe ancora più senso, perché si potrebbe interrogare solo i messaggi che sono contrassegnati con i termini di questo utenti tassonomie, ma che avrebbe bisogno di una casella postale di meta con i termini utenti tassonomia. La condizione sarebbe la stessa: nome utente e si era appena aggiungere la tassonomia:

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

Il posizionamento delle capacità di controllo (current_user_can) potrebbe essere da qualche altra troppo. Dipende tutto sulle vostre specifiche esigenze. Proprio per rendere questo sicuro: Questi sono esempi per guidare l'utente sulla buona strada per un sollution. La speranza che aiuta :)

Ho fatto qualcosa di simile con "membri", un tipo di messaggio personalizzato, e un'assegnazione manuale dei diritti d'autore a un membro specifico, in quanto si tratta di un piccolo sito web del gruppo, ma io ricordo di aver letto in qualche thread di supporto stampa di amici che è possibile collegare nel processo di iscrizione, quindi suppongo che sarebbe stato possibile creare automaticamente un tipo di messaggio page / custom per utente su iscrizione e assegnare tale pagina specifica all'elemento appena creato come pagina iniziale. Ho anche aggiunto editor di front-end di Scribu e bloccato il backend per i membri che non sono amministratori. Probabilmente si può anche aggiungere un redirect su iscrizione in modo da nuovi membri vengono reindirizzati alla loro pagina (che, suppongo, potrebbe avere un certo contenuto di default).

vedrò se riesco a trovare quel filo supporto BuddyPress.

Addendum - c'è un bug nel selettore di autore sul campo Modifica Messaggio. Attualmente non utilizza il sistema dei permessi di serie, che può rendere la soluzione membri più difficile (anche se sarà probabilmente funzionerà se l'autore è stato assegnato a pagina-creazione). C'è una patch in trac, ma non credo che è stato applicato al nucleo ancora.

questo è possibile con il s2member plug-in, la versione gratuita è sufficiente. Ho creato un client area in cui ogni cliente ha un URL c'è un video tutorial qui: http: // www.primothemes.com/forums/viewtopic.php?f=4&t=586&start=0&hilit=client+area

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top