Area Riservata WordPress senza plugin

Area Riservata WordPress senza plugin. Tutti ormai sappiamo che installare plugin a gogo, può essere controproducente per i nostri siti, i codici possono andare in conflitto e creare crash del sito, ma soprattutto possono rallentarlo, perché ovviamente il processore è sottoposto a lavoro straordinario per ogni plugin in più che  installiamo nel nostro sito. Quindi per creare una Area Riservata WordPress senza plugin, è necessario conoscere un minimo di codice da inserire nel nostro tema. Non è necessario essere programmatori per copiare del codice e scriverlo in un file da inserire nel sito, ma è vivamente consigliato sapere cosa si sta facendo, una manovra sbagliata e ciao sito. Non voglio scoraggiare nessuno ma e sempre meglio avere paura che buscarne, come si dice. Se volete continuare ovviamente lo fate sotto la vostra totale responsabilità. Per iniziare a creare una Area Riservata WordPress senza plugin, bisogna inserire il codice qui sotto nel file functions.php. Lo potete fare sia dal back-end di wordpress che interagendo con il vostro file manager preferito, io uso Filezilla. La prima parte di codice e:

add_action(‘init’, ‘crea_contenuti’);
function crea_contenuti() {
$labels = array(
‘name’ => __(‘Area Riservata’),
‘singular_name’ => __(‘Contenuto’),
‘add_new’ => __(‘Aggiungi Contenuto’),
‘add_new_item’ => __(‘Nuovo Contenuto’),
‘edit_item’ => __(‘Modifica Contenuto’),
‘new_item’ => __(‘Nuovo Contenuto’),
‘all_items’ => __(‘Elenco Contenuti’),
‘view_item’ => __(‘Visualizza Contenuti’),
‘search_items’ => __(‘Cerca Contenuto’),
‘not_found’ => __(‘Contenuto non trovato’),
‘not_found_in_trash’ => __(‘Contenuto non trovato nel cestino’),
);
$args = array(
‘labels’ => $labels,
‘public’ => true,
‘rewrite’ => array(‘slug’ => ‘contenuti’),
‘has_archive’ => true,
‘hierarchical’ => false,
‘menu_position’ => 5,
‘supports’ => array(
‘title’,
‘editor’,
‘thumbnail’
),
);
register_post_type(‘area-riservata’, $args);
}

Questa prima parte crea nel backend il menu che ci servirà a scegliere il contenuto da inserire in un articolo.

Si inserisce il contenuto da inserire per un accesso privato, Foto, Video , Link etc….
Dopo dobbiamo continuare ad inserire del codice nel file function.php per rendere il contenuto privato.

function 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’, ‘force_type_private’);

Ok una volta inserito parte di codice per creare la nostra area protetta dobbiamo fare in modo che i contenuti siano visibili agli utenti con il ruolo di sottoscrittore al quale noi abbiamo preventivamente provveduto a dare ruolo, nome e password.

$subRole = get_role( ‘subscriber’ );
$subRole->add_cap( ‘read_private_posts’ );

A questo punto non resta che creare un template per l’area riservata che abbiamo creato, e per fare questo creiamo un file php nella cartella del tema selezionato. Per creare il file va bene un qualsiasi editor come tipo Notepad++, Atom, Sublime text etc.. Il file che andremo a creare si chiamerà come vorremo ma in questo caso per non creare confusione lo chiameremo  “areariservata.php” nel quale andremo a copiare il codice qui sotto.

Areariservata_php
Download file

Per default i contenuti privati, nel titolo dell’articolo hanno la scritta “privato” , per rimuoverla è necessario inserire il codice qui sotto all’interno del file function.php

// Rimuovo Privato dal titolo
function clean_title($titolo) {
$titolo = attribute_escape($titolo);
$cerca = array(
‘#Privato:#’
);
$sostituisci = array(
‘-‘ // Sostituiamo la voce “Privato” con
);
$titolo = preg_replace($cerca, $sostituisci, $titolo);
return $titolo;
}
add_filter(‘the_title’, ‘clean_title’);

infine, per  precisione, togliamo la barra di WordPress agli utenti che si registrano escludendo l’utente amministratore, sempre aggiungendo questo script nel file function.php. Questi due script non sono determinanti nel mio caso ho avuto qualche conflitto con il titolo quindi vedete se funziona o meno e nel caso lo togliete.

if (!current_user_can(‘manage_options’)) {
add_filter(‘show_admin_bar’, ‘__return_false’);
}
if (!current_user_can(‘edit_posts’)) {
add_filter(‘show_admin_bar’, ‘__return_false’);
}

Buona Fortuna