lucamatera-nuovo-logo

Grafica Siti web Manutenzione SEO Domini Gestione

Creare in automatico la pagina dell’utente registrato

Pagine-private-01
Il codice che troverete in questo articolo vi permetterà di creare in automatico una pagina per ogni utente che si registrerà al vostro sito. Tutto questo in modo automatico.

Per permettere la registrazione ricordate di attivare l’opzione chiunque si può registrare al sito che si trova nelle impostazioni di WordPress.

La nuova pagina creata avrà come titolo lo username del nuovo utente appena registrato! Funzione molto utile se si vuole utilizzare il plugin S2Member e le Custom Capabilities per la creazione di aree private.

Prima di continuare a leggere vi invito a leggere il codex ufficiale di WordPress al seguente indirizzo: Function Reference/wp insert post

La funzione che utilizzeremo è <?php wp_insert_post( $post, $wp_error ); ?> appositamente modificata per il nostro scopo. Quello che dovrete fare è semplicemente copiare ed incollare il seguente script nel file functions.php contenuto all’interno del vostro tema.

// Crea nuova pagina utente al momento della registrazione
[php]
function after_login_create_page($user_id){

$the_user = get_userdata($user_id);
$new_user_name = $the_user->user_login;
$my_post = array();
$my_post[‘post_title’] = $new_user_name;
$my_post[‘post_type’] = ‘page’;
$my_post[‘comment_status’] = ‘closed’;
$my_post[‘post_content’] = ‘Benvenuto! stiamo impostando la tua pagina personale, questa sarà disponibile a breve’;
$my_post[‘post_status’] = ‘publish’;
wp_insert_post($my_post);

}

add_action(‘user_register’, ‘after_login_create_page’);
[/php]


Vi ricordo che è possibile anche creare dei nuovi post e non solo delle pagine, per fare questo basta cambiare la variabile $my_post[‘post_type’] = ‘page’; in $my_post[‘post_type’] = ‘post’;

Ho recentemente ricevuto delle richieste su come personalizzare ulteriormente questa funzione ad esempio su come indirizzare gli utenti alla loro pagina personale subito dopo aver eseguito il login o su come creare un pulsante nel menù che rimandi alla pagina privata di ogni singolo utente, per questo ho deciso di aggiornare questo articolo e di seguito trovate le due funzioni da inserire nel file functions.php del vostro tema.

// Funzione per re-indirizzare automaticamente gli utenti dopo il login
[php]
function after_login_redirect( $redirect_to, $url, $user ) {

global $user;
get_currentuserinfo();

if(isset( $user->roles) && is_array($user->roles)) {
//controllo se amministratore
if(in_array("administrator", $user->roles)){

// indirizzo amministratore su dashboard
$redirect_to = admin_url();

}else {

// indirizzo utente alla sua pagina
$redirect_to = home_url( ‘/’ . $user->user_login );

}
}

return $redirect_to;
}

add_filter(‘login_redirect’, ‘after_login_redirect’, 10, 3);
[/php]

// Funzione per creare pulsante nel menu
[php]
function add_menu_button($items){

// Controllo se l’utente è connesso per mostrare il pulsante solo agli utenti connessi
if(is_user_logged_in()){

// Ottengo i dati dell’utente
global $current_user;
get_currentuserinfo();

// Creo variabile per indirizzare l’utente a www.miosito.it/nomeutente
$url = home_url( ‘/’ . $current_user->user_login . ‘/’ );

// Titolo del pulsante
$title = ‘Pagina Utente’;

// Aggiungo il pulsante al menu
$items .= ‘<li><a href="’ . $url . ‘">’ . $title . ‘</a></li>’;

}

return $items;
}

add_filter( ‘wp_nav_menu_items’, ‘add_menu_button’ );
[/php]

Altre caratteristiche tecniche incluse

Altre caratteristiche tecniche incluse

Altre caratteristiche tecniche incluse

Apri chat