• Chi sono
  • Contattami
  • Feed RSS
  • FlipBoard

Karibusana

  • MacOs
  • WordPress
  • iPhone
  • Jailbreak
  • Marketing
  • SEO
Ti trovi qui: Home / WordPress / Come creare area riservata WordPress senza plugins

Come creare area riservata WordPress senza plugins

Aggiornato da Vincenzo Vecchio il 8 Luglio, 2020 14 commenti

area riservata wordpress senza plugin

In questo articolo ti spiego come creare un’area riservata in WordPress senza utilizzare plugins, in passato avevo già crreato un articolo su questo argomento e avevo parlato di un utile plugin per i neofiti di WordPress, pertanto se non conosci bene WordPress ti suggerisco di leggere “Area riservata su WordPress con WP Customer Area. Vediamo invece come sia semplice realizzare una semplice area privata utilizzando i custom post type di WordPress in associazione ai ruoli e capabilities messi già a disposizione da WordPress stesso e senza l’utilizzo di plugins.

Riassumiamo i passaggi per la creazione dell’area riservata in WordPress senza plugin

L’idea è quella di utilizzare l’opzione articolo privato di WordPress e per rendere più facile la gestione dei nostri articoli utilizzeremo i custom post tiype, tra la impostazioni di pubblicazione degli articoli WorPress ci offre la possibilità di modificarne la visibilità potendo scgliere scegliere tra le opzioni “pubblico, protetto da password e privato”. Gli articoli privati sono però solo visualizzabili dagli utenti appartenti ai ruoli con la capability read_private_posts: gliamministratori e gli editori. Dal momento che non è auspicabile registrare nuovi utenti come editori ne tantomeno come amministratori dovremo aggiungere questa capability agli utenti con il ruolo di sottoscrittore oppure creare un ruolo specifico per le nostre esigenze. Di seguito trovi elencati i passaggi che seguiremo

  • Creazione di un custom post type che chiameremo per semplicità “Area Privata”, questo verrà mostrato nel menu di amminstrazione di WordPress e ci permetterà di inserire e tenere ordinati i nostri contenuti. Quindi andremo a rendere privati di default tutti i nuovi contenuti che inseriremo
  • Creazione di un template di pagina personalizzato per mostrare il modulo di login quando l’utente non è connesso e la lista di articoli privati dopo aver eseguito il login
  • Aggiungeremo la capability read_private_post agli utenti con il ruolo di sottoscrittore e rimuoveremo anche l’accesso al backend di WordPress
  • Faremo anche in modo di poter mostrare gli articoli selettivamente per i singoli utenti

1. Definiamo il custom post type

Per il nostro scopo utilizzeremo la funzione di WordPress register_post_type, vai al link per scoprire ulterioripossibilità di personalizzazione delle opzioni.  Apriamo il file function.php del nostro tema wordpress e inseriamo il seguente codice.

function karibusana_custom_post_type() {

	$labels = array(
		'name' => __( 'Area riservata'),
		'singular_name' => __( 'Articolo' ),
		'menu_name' => __( 'Area riservata'),
		'name_admin_bar' => __( 'Area riservata'),
		'add_new' => __( 'Nuovo articolo'),
		'add_new_item' => __( 'Aggiungi nuovo articolo'),
		'new_item' => __( 'Nuovo articolo'),
		'edit_item' => __( 'Modifica articolo'),
		'view_item' => __( 'Visualizza articolo'),
		'all_items' => __( 'Elenco articoli'),
		'search_items' => __( 'Cerca articoli'),
		'not_found' => __( 'Nessun articolo trovato'),
		'not_found_in_trash' => __( 'Nessun articolo trovato nel cestino')
	);

	$args = array(
		'labels' => $labels,
		'public' => true,
		'rewrite' => array('slug' => 'area-privata'),
		'show_ui' => true,
		'show_in_menu' => true,
		'query_var' => true,
		'capability_type' => 'post',
		'has_archive' => true,
		'hierarchical' => false,
		'menu_position' => 5,
		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
	);

	register_post_type( 'area-riservata', $args );
}

add_action( 'init', 'karibusana_custom_post_type' );

2. Articoli del custom post type come privati

Per nascondere i contenuti al pubblico decidiamo di impostarli compe privati, questo è possibile farlo semplicemente utilizzando le impostazioni di pubblicazione di WordPress. Cosa succederebbe se il tuo cliente dimenticasse di impostare l’artcolo come privato prima di pubblicarlo? Per evitare questo tipo di problemi possiamo fare in modo che tutti gli articoli creati all’interno del nostro custom post type siamo pubblicati come privati di default. Utilizzeremo il filtro wp_insert_post_data e per fare questo devi inserire il seguente codice nel file functions.php del tuo tema.

function karibusana_force_type_private($post) {
	if ($post['post_type'] != 'area-riservata' || $post['post_status'] == 'trash')
	return $post;
	$post['post_status'] = 'private';
	return $post;
}
add_filter('wp_insert_post_data', 'karibusana_force_type_private');

3. Rendiamo i contenuti privati visibili agli utenti di tipo “Sottoscrittore”

Come detto precedentemente i contenuti privati di default sono solo visbili agli utenti con il ruolo di editore o amministratore, pertanto dobbiamo aggiungere la capability read_private_posts anche al ruolo sottoscrittore utilizzando la funzione add_cap e per fare questo devi aggiungere il seguente codice all’interno del file functions.php del tuo tema

$role = get_role( 'subscriber' );
$role->add_cap( 'read_private_posts' );

4. Richiamiamo i custom post type in un template pagina “area riservata”

Per visualizzare i nostri custom post type andremo a creare un nuovo template per la pagina area riservata, chiamiamo questo nuovo file area-riservata.php e lo inseriamo nella cartella del nostro tema. In questo file andremo ad inserire il loop per mostrare i nostri articoli privati agli utenti connessi e una condizione logica peer mostrare il modulo di login se l’utente non è connesso. Nel file area-riservata.php dobbiamo inserire il seguente codice, ho ottimizzato il codice per il tema twentytwelve se utilizzate un altro tema dovrete inserire i giusti tag css per ottimizzarne il layout, scrivetemi un commento qualora vi servisse aiuto.

<?php

/*
Template Name: Area Riservata
*/

get_header();

?>

<div id="primary" class="site-content">
<div id="content" role="main">

<?php

//se l'utente è loggato mostra messaggio di benvenuto e post
if ( is_user_logged_in() ) {

//loop custom post type privati
$wpquery = new WP_Query(array(
	'post_type' => 'area-riservata',
));

while ($wpquery->have_posts()): $wpquery->the_post();

get_template_part( 'content', get_post_format() );

endwhile; ?>

</div><!-- #content -->
</div><!-- #primary -->

<?php

}else{

$args = array(

	'echo' => true,
	'remember' => false,
	'redirect' => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
	'form_id' => 'loginform',
	'id_username' => 'user_login',
	'id_password' => 'user_pass',
	'id_remember' => 'rememberme',
	'id_submit' => 'wp-submit',
	'label_username' => __( '' ),
	'label_password' => __( '' ),
	'label_log_in' => __( 'Log in' ),
	'value_username' => '',
);

wp_login_form( $args );

}

get_sidebar();
get_footer();

5. Rimuoviamo la voce “private” prima del titolo dell’articolo

Di default wordpress mostra la voce “private” prima del titolo dell’articolo, per rimuoverla basta inserire il seguente codice nel file functions.php del vostro tema

function karibusana_remove_private_post_prefix($format) {
return '%s';
}

add_filter( 'private_title_format', 'karibusana_remove_private_post_prefix', 99, 2 );

Conclusione

In questo articolo hai visto come è semplice creare un’area riservata in WordPress senza utilizzare plugins, nel prossimo articolo ti spiegherò come assegnare degli articoli ad uno specifico utente.

Se invece preferisci utilizzare un plugin ne ho sviluppato uno ad hoc, questo plugin ti permette anche di attribuire gli articoli privati a più di un utente e aggiunge anche una sidebar all’area privata dove poter inserire dei widget specifici per gli utenti che hanno accesso all’area privata.

Checkout Aggiunto al carrello

Altri articoli che potrebbero interessarti

Correggere errori 404
Correggere errori 404 su WordPress
wordpress google page speed
Ottimizza WordPress con Google Page Speed
BackWPup in iatliano
Creare un backup di WordPress con BackWPup

Vincenzo Vecchio

Appassionato di tecnologia. Da molti anni mi occupo della realizzazione di siti web utilizzando i più comuni CMS. In particolare WordPress e Joomla. Di recente mi sono anche avvicinato al modo Apple e a tutti i suoi prodotti.

Seguimi su : FacebookGoogle+Twitter

Commenti

  1. edoardo dice

    26 Luglio 2020 alle 19:53

    Ciao e grazie per l’articolo.
    Se volessi creare un’area privata… interattiva, dove l’utente scambia privatamente con l’amministratore una immagine d un testo, e l’amministratore risponde allo stesso modo, credi sia possibile?

    Rispondi
    • Vincenzo dice

      27 Luglio 2020 alle 0:06

      Ciao Edoardo purtroppo questo script non permette di fare quello che hai chiesto. Però puoi provare con il plugin wp customer area, trovi una recensione qui

  2. Daniele dice

    8 Luglio 2020 alle 17:59

    Visto l’email!!! Ti aggiungo volentieri su skype!!!! Grazie io sono abituato a testare tutto in locale anche se non so se tutto va così…. Boh…

    Rispondi
  3. Daniele dice

    8 Luglio 2020 alle 12:49

    Ciao ho provato ma dopo aver inserito le funzioni nel file functions.php e creato il file area-riservata.php ma in un punto parli invece di area-privata.php non so se questo è importante ma vorrei capire…. Come deve chiamarsi il file? Poi volevo capire se nell’admin va creata una pagina che si allaccia al tutto oppure no….

    Scusami ma io sono un grafico in ambiente web e per motivi economici sto cercando di trovare un sistema di creare il tutto da me…. Ma vedop anche che hai un tuo plugin pronto…. Avrei bisogno di capire nel dettaglio cosa fa quel plugin e se mi dai un tuo contatto magari ti spiego nel dettaglio cosa mi serve magari potrebbe nascere una collaborazione….

    Ti ringrazio e buona giornata!!!

    Rispondi
    • Vincenzo dice

      8 Luglio 2020 alle 13:08

      Ciao Daniele, ho corretto l’articolo, ti ringrazio per la segnalazione inoltre ti ho inviato una mail privata.

  4. Daniele dice

    8 Luglio 2020 alle 12:10

    Ho capito…. Ok rifaccio tutto il passaggio e vedo gli errori poi ti ricontatto!!!
    Grazie della disponibilità!!!

    Rispondi
  5. Daniele Frati dice

    8 Luglio 2020 alle 11:30

    Cavolo scusami credevo che era l’articolo del plugin il tuo script se lo inserisco è molto peggio la situazione perché non mi da errore riga ecc… Mi da pagina non trovata!!!! Quindi devo levare tutto dal file functions.

    Quello che spieghi è molto interessante e vorrei farlo senza usare plugin ma qui inizio davvero a scoraggiarmi perché sembra che sia devvaero difficile che trovi qualcosa che funzioni sul serio…

    Boh…

    Rispondi
    • Vincenzo dice

      8 Luglio 2020 alle 11:41

      Mi dispiace che tu non riesca a far funzionare lo script. Ti ripeto senza il log della console degli errori non posso aiutarti.

  6. Daniele dice

    8 Luglio 2020 alle 10:44

    Sono davvero molti errori… E sinceramente ora che mi viene in mente accantonai questo plugin proprio per quello…. Vorrei tanto girarteli ma ho disattivato il plugin e l’ho riattivato ora ma non so come mai non va più niente nonostante le impostazioni ci siano ancora…
    Credo che questo plugin abbia davvero tanti problemi secondo me….. Se trovo il modo di ripristinarlo correttamente ti invierò gli errori…

    Comunque grazie lo stesso….

    Rispondi
    • Vincenzo dice

      8 Luglio 2020 alle 10:54

      Ciao Daniele, ho testato lo script prima di pubblicarlo nel blog e funziona senza problemi. Non si tratta di un plugin e richiede un po’ di esperienza per l’installazione. Se hai tempo inviami il log degli errori e magari riesco ad aiutarti.

  7. Daniele Frati dice

    7 Luglio 2020 alle 18:54

    Ho un mio tema fatto da me molto semplice e sto cercando di fare un’area riservata senza usare plugin. Ho provato ad inserire i tuoi codici ma sembra che non funzionino…. Boh…

    Rispondi
    • Vincenzo dice

      7 Luglio 2020 alle 19:15

      Ciao Daniele, potresti darmi più dettagli? Ad esempio che tipo di errore ti rileva la console log di php?

  8. andrea dice

    24 Gennaio 2020 alle 23:58

    Ciao , ho letto l’articolo, molto interessante, a me servirebbe assegnare degli articoli ad uno specifico utente, puoi illustrarmi con il codice come fare?grazie!

    Rispondi
    • Vincenzo dice

      25 Gennaio 2020 alle 8:33

      Ciao Andrea, grazie mille. Nei prossimi giorni scriverò un tutorial per spiegarti come fare. Seguimi sulla pagina Facebook per ricevere tutti gli utlimi articoli pubblicati sul blog.

Lascia un commento Annulla risposta

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

Articoli Recenti

  • Come creare contenuti privati per utenti
  • Come disabilitare la GPU AMD Radeon su MacBook Pro
  • Come creare area riservata WordPress senza plugins
  • GDPR e WordPress la guida definitiva per il tuo sito
  • Come ottimizzare i CSS per avere 100/100 su Google PageSpeed
  • Integrare Gravity Forms con MyCred

Commenti Recenti

  • Vincenzo su Area riservata su WordPress con WP Customer Area
  • Nico su Area riservata su WordPress con WP Customer Area
  • Vincenzo su Area riservata su WordPress con WP Customer Area
  • Nico su Area riservata su WordPress con WP Customer Area

Archivi

  • Febbraio 2020 (1)
  • Dicembre 2019 (1)
  • Agosto 2018 (1)
  • Aprile 2018 (1)
  • Marzo 2018 (1)

© 2023 · Cookie Policy · Privacy Policy