Area Riservata con WordPress senza Plug-in: visualizzare contenuti diversi per ogni utente – Marchetti Design

Area Riservata con WordPress senza Plug-in: visualizzare contenuti diversi per ogni utente

By Andrea Marchetti
Feb 2013

Area Riservata con WordPress senza Plug-in: visualizzare contenuti diversi per ogni utente

AGGIORNAMENTO NUOVO TUTORIAL: Come creare un area riservata Vol.2 – Miglioramenti nel codice e nuove funzionalità

Nel precedento articolo http://www.marchettidesign.net/2012/11/creare-un-area-riservata-con-wordpress-senza-plug-in/ abbiamo visto come realizzare un area riservata con wordpress. Con il sistema utilizzato ogni utente loggato vede tutti i contenuti riservati.

Tutti gli utenti vedono tutti i contenuti, non è possibile rendere visibile un contenuto solo a un singolo utente. In questo articolo risolveremo questo problema in modo che ogni utente veda solo i suoi contenuti e non anche quelli degli altri registrati.

L’approccio che utilizzaremo è il seguente, tenendo come base il codice dell’articolo precedente:

– Creaimo una tassonomia utenti non gerarchica (quindi con l’interfaccia tipica dei tag di wordpress).

– Modifichiamo il template personalizzato area riservata in modo da visualizzare per ogni utente il rispettivo contenuto.

– Quando pubblicheremo i contenuti riservati inseriremo nel box  della tassonomia Utenti il nome dell’utente che volgiamo far accedere al contenuto (deve essere lo stesso nome utente che si utilizza per accedere all’area riservata) in questo modo colleghiamo il contenuto riservato al rispettivo utente.

Una volta loggati verranno visualizzati solo gli articoli corrispondenti. Andiamo a vedere il codice da inserire nel file function.php:

1) Definiamo la tassonomia utenti

Tramite questa tassonomia collegheremo i contenuti riservati all’utente, aggiungiamo il codice dopo il blocco che definisce il custom post-type area riservata (codice spiegato nell’articolo precedente).


//creo tassonomia utenti
add_action( ‘init’, ‘crea_utenti’ );
function crea_utenti() {

$labels = array(
‘name’ => __(‘Utenti’),
‘singular_name’ => __(‘Utente’),
‘search_items’ => __(‘Cerca Utenti’),
‘popular_items’ => __(‘Utenti più utilizzati’),
‘all_items’ => __(‘Elenco Utenti’),
‘edit_item’ => __(‘Modifica Utente’),
‘add_new_item’ => __(‘Nuovo Utente’),
‘separate_items_with_commas’ => __(‘Separa gli utenti con una virgola’),
‘choose_from_most_used’ => __(‘Scegli tra gli utenti più utilizzati’),
);

$args = array(
‘labels’ => $labels,
‘hierarchical’ => false
);
register_taxonomy(‘utenti’,’area-riservata’, $args);
}

Nel backend ci apparirà il box utenti

 

2)Modifichiamo il template area riservata

Sostituiamo il loop utilizzato nel articolo precendente con un loop che utlizza il nome dell’utente loggato come valore della tassonmia utenti. Quando il nome dell’utente che visualizza il loop coincide con il valore impostato nella tassonomia appaiono i post, altrimenti viene mostrato il messaggio che non ci sono contenuti.

Ecco il codice completo del custom template:


<?php
/*
Template Name: Area Riservata
*/
?>
<?php get_header(); ?>

<?php //se l’utente è loggato mostra messaggio di benvenuto e post
if ( is_user_logged_in() ) {?>

<?php global $current_user;
get_currentuserinfo();

//richiamo il nome dell’utente corrente
$my_user = $current_user->user_login ;
echo ‘Benvenuto, ‘. $my_user ;

?>

<hr />

<?php //loop custom post type privati
$wpquery = new WP_Query(array(
‘post_type’ => ‘area-riservata’,
‘utenti’ => ”. $my_user .” //imposto il nome dell’utente come valore della tassomia utenti

));

?>

<?php if ( $wpquery -> have_posts() ) : while ( $wpquery -> have_posts() ) : $wpquery -> the_post(); ?>
<div class="post">
<h2><?php the_title(); ?></h2>
<?php the_content(‘Leggi…’);?>
</div>

<hr />
<?php endwhile; else: ?>

<div class="post">
<h3>Non ci sono contenuti riservati per l’utente: <?php echo $my_user ?></h3>

</div>

<?php endif; ?>

<?php } else { ?>

Area Riservata

<?php if (!(current_user_can(‘level_0’))){ ?>

<h2>Login</h2>
<form action="<?php echo get_option(‘home’); ?>/wp-login.php" method="post">
<input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="20" />
<input type="password" name="pwd" id="pwd" size="20" />
<input type="submit" name="submit" value="Send" class="button" />
<p>
<label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label>
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER[‘REQUEST_URI’]; ?>" />
</p>
</form>
<a href="<?php echo get_option(‘home’); ?>/wp-login.php?action=lostpassword">Recover password</a>
<?php } else { ?>
<h2>Logout</h2>
<a href="<?php echo wp_logout_url(urlencode($_SERVER[‘REQUEST_URI’])); ?>">logout</a><br />
<a href="http://XXX/wp-admin/">admin</a>

<?php }?>

<?php } ?>

<?php get_footer(); ?>

Appaiono solo i post che hanno nel box utenti il nome del utente loggato

Cosi facendo ogni utente vedrà solo i suoi contanuti riservati, si potrebbe affinare il sistema aggiungendo un pulsante di log-out e rendendo selezionabili gli utenti tramite una select box. Queste funzione le implementeremo nel prossimo articolo.

Saty Tuned!

 

21 Commenti

  1. Vincenzo ha detto:

    Ciao, ottimo articolo! Ho seguito le tue indicazioni però quando (loggato) vado nella pagina dell’area riservata “costretto” a visualizzare il titolo e l’intero contenuto. nello screenshot (l’ultimo di questo tutorial) mi sembra di vedere solo il titolo del contenuto. Ho provato a mettere il titolo che porta al contenuto ma wp risolve con un 404.
    Mi sfugge qualcosa?
    Ciao

    • Andrea Marchetti ha detto:

      Ciao Vincenzo, nella screenshot c’è il titolo e il contenuto dell’articolo sotto, è il testo “contenuto riservato per l’utente admin” se al posto del testo inserisci immagini o file li vedresti già in questa pagina.

      • Vincenzo ha detto:

        Grazie per la risposta. Quindi mi confermi che l’utente loggato vede il contenuto del post e non soltanto il titolo. Ho provato a fare una lista dei post per l’utente, ma quando clicco sul titolo il sistema risponde con pagina inesistente. Dovrei intervenire in qualche parte del codice?

  2. Vincenzo ha detto:

    Ok risolto ed anche in maniera stupida (il codice andava bene) : è necessario salvare le impostazioni dei permalink anche se non si cambia nulla.
    Grazie ancora Andrea.

  3. Maurizio ha detto:

    ciao Andrea, hai novita’ per la scelta degli utenti tramite “select box” , perchè finche’ son pochi i nomi posso ricordarli ,ma con tanti utenti da gestire mi risulterebbe molto piu’ complicato.
    grazie
    Ciao
    Maurizio

  4. Emilio ha detto:

    Ottimo Articolo! utile….davvero utile semplice, lineare! complimenti…!.
    Ho una domanda, se si volesse implementare delle voci di menu o una widget specifica ad ogni utente…com’è possibile effettuala? O magari un redirect da effettuarsi successivamente al loging?
    Grazie

    • Andrea Marchetti ha detto:

      Ciao Emilio, Grazie dei complimenti.
      Per implementare un widget nell’area riservata si potrebbe creare una sidebar che viene visualizzata quando si effettua il log-in..

  5. William ha detto:

    Funziona! 🙂 Grazie mille! ottima guida, l’aiuto che cercavo. ancora grazie

  6. bbs ha detto:

    bellissima guida.
    ho seguito tutto passo-passo ma non riesco a visualizzare la pagina (ne il login ne l’articolo da loggato, vedo solo la preview).
    vengo reindirizzato alla homepage con il messaggio “nessun articolo da visualizzare”.
    sto lavorando su un tema vuoto con i file base, ma anche con twenty eleven si comporta allo stesso modo.

    come posso fare?

  7. Francesco ha detto:

    Ciao Andrea, come il cacio sui maccheroni la tua guida…
    Ho provato a sostituire il campo text in admin per la selezione degli utenti con un campo select in modo da dare la possibilità all’amministratore di non dover ricordare a memoria tutti gli utenti, ma il risultato è stato “il nulla”.
    Puoi darmi una mano? grazie

    • Andrea Marchetti ha detto:

      Ciao Francesco,
      a breve pubblicherò una guida su come realizzare un area riservata con queste funzionalità…
      Stay Tuned!

  8. Raffaele ha detto:

    Ciao Francesco, ho seguito step by step come creare un’area riservata, ho riscontrato un problema: se eseguo il login mi porta sulla schermata login per l’accesso a WP. Inoltre come faccio ad assegnare le password e login agli utenti della sola area riservata? Grazie

  9. Raffaele ha detto:

    Scusa Francesco, avevo dimenticato di dirti come mai la schermata di login e password, insieme al link dei contenuti ( NON CI SONO CONTENUTI RISERVATI PER L’UTENTE:…) nonché Benvenuto….. si trovano nel footer a piè pagina?
    Ancora Grazie

    • Andrea Marchetti ha detto:

      Ciao Raffaele, mi chiamo andrea 🙂 ti consiglio di ricontrollare il codice, il tema visualizza il modulo di login in un custom template da impostare in una pagina..

  10. Alessandro ha detto:

    Ciao,

    L’argomento è molto interessante.

    Abbiamo sviluppato un sito web per dei corsi professionali. Quello che ci interessa è creare un are riservata sicura (non indicizzata nei motori di ricerca, mentre il sito si) dove gli studenti dello stesso accedano con la solita password fornita dal docente in aula allo spazio per scaricare le lezioni del corso. Plugin già pronti non ne ho trovati, soprattutto free. hai suggerimenti a riguardo?

    Complimenti per la guida.

  11. Fabio ha detto:

    Ciao ragazzi, io ho un problema simile: sto creando un sito web interno all’azienda in cui lavoro (è la prima volto che faccio un sito). Mi è stato richiesto di creare il sito che sia accessibile tramite utente e password e fin qui tutto ok. Ora però dovrei creare una pagina con delle domande (le domande sono uguali per tutti gli utenti) ma fare in modo che quando un utente clicca sul pulsante del menù “questions” venga indirizzato alla sua pagina con le domande. Come faccio a fare una cosa del genere?
    Grazie!!!

    • afmarchetti ha detto:

      Il modo più semplice per fare una cosa del genere è creare una pagina con dentro le domande e proteggerla con password 😉

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Share