Di recente mi è capitato di dovere creare automaticamente delle pagine personali per ogni utente appena registrato in un sito creato in WordPress.
La nuova pagina creata avrà come titolo l’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 contentuo all’interno del vostro tema.
// Crea nuova pagina utente al momento della registrazione
[php]
function karibusana_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’, ‘karibusana_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 perosnale 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 karibusana_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’, ‘karibusana_login_redirect’, 10, 3);
[/php]
// Funzione per creare pulsante nel menu
[php]
function karibusana_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 dle 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’, ‘karibusana_menu_button’ );
[/php]
Ti serve aiuto per personalizzare il tuo sito WordPress? Non esitare a contattarmi
Ciao Vincenzo .. Molto utile ed interessante il tuo articolo. Mi chiedevo se con alcune modifiche al codice era possibile far creare in automatico (alla registrazione di un utente) una pagina visibile a tutti con link personalizzabili e possibilità di aggiornamento di questa pagina dalla dashboard utente. Sto utilizzando già il plugin eMember per l’area riservata.
Come potrei risolvere fare?
Ciao Giampaolo, non riesco a capire bene cosa vorresti fare. Se ti serve una pagina che sia uguale per tutti non avrebbe senso crearla di nuovo ogni volta che un utente si registra. Forse ha più senso creare una pagina ed impostare la visualizzazione del contenuto solo per utenti appartenenti ad uno specifico gruppo o con particolari permessi.
Ciao Vincenzo… Grazie per la tua risposta. Si, infatti non è molto chiaro.
Si la pagina è uguale per tutti ma ad esempio, il link per i social, non sono uguali per tutti, l’immagine del profilo, ed eventualmente neanche i link per affiliazione esterni. Sono interessato a personalizzare, dall’area riservata utente, questi dati, in modo che ognuno di loro possano inserire i propri dati. Spero sia più comprensibile… Grazie
Ciao Gianpaolo purtroppo non credo che sia facile creare un processo automatizzato che ti permetta di inserire dei link specifici per ogni singolo utente, per quanto riguarda l’immagine del profilo, se non sbagli utilizzi eMember, io non ho mai utilizzato questo plugin però facxendo una ricerca onliine ho trovato questo post che potrebbe fare al caso tuo https://www.tipsandtricks-hq.com/forum/topic/emember-profile-picture
Ciao Vincenzo,
mi sono appena iscritto alla tua newsletter, avevo bisogno di un aiuto ho appena letto il tuo articolo su “Crea automaticamente pagine per nuovo utente”.
Nel mio caso essendo una scuola ho utenti diversi alcuni per materia d’insegnamento, mi servirebbe che quando quelli di un certo corso si loggano vadano direttamente nella loro pagina privata e non in altre.
Potresti aiutarmi?
Grazie
Valter
Ciao Valter benvenuto nella newsletter di Karibusana. Con il sistema descritto nell’articolo è possibile creare delle pagine per singoli utenti, ogni utente potrà solo accedere alla sua pagina. Forse a te serve una pagina che sia visibile a per un certo gruppo di utenti? In questo caso forse il plugin Groups protrebbe fare al caso tuo. Per una consulenza più dettagliata non esitare a contattarmi per email
…purtroppo funziona solamente per impostare la Login Welcome Page all’interno del plugin s2Member, io ho bisogno di mettere un url del tipo: http://www.miosito.it/nomeutenteconnesso/ all’interno del menu… e in questo caso purtroppo le sintassi di tipo %%current_user_login%% non funzionano…
non riesco a trovare una soluzione 🙁
Ciao Emanuele ti ho inviato la soluzione al tuo indirizzo email. Spero di esserti stato d’aiuto. A presto 😉
Grazie funziona!
Ho impostato la pagina come privata e edita dall’utente che si sta registrando,
Mi è rimasto un dubbio:
Come posso creare un link che vada poi alla pagina personale dell’utente connesso?
Ovviamente deve variare in base all’utente connesso…
Ottimo, puoi provare a seguire questa guida https://s2member.com/kb-article/customizing-your-login-welcome-page/ per indirizzare gli utenti alla loro pagina dopo il login. Non ho avuto il tempo di testarlo ma dovrebbe funzionare.
Domanda: se volessi settate come privato il post e come autore l’utente che si sta registrando?
Ciao Emanuele la risposta alla tua domanda è nell’articolo, controlla il codice per ulteriori modifiche e personalizzazioni
Ciao Vincenzo,
mi collego a questo post per chiederti un consiglio: devo creare un sito per un ordine professionale (con wordpress, logicamente).
Sono alla ricerca di un plugin – anche a pagamento – con il quale, quando un utente si iscrive, venga creata automaticamente la propria pagina personale (logicamente visibile solo a lui e all’amministratore) e nella quale l’amministratore potrà inserire dei contenuti esclusivi solo per quell’utente (ad esempio degli attestati personali in pdf).
Ne sto provando molti, ma o sono incompleti o creano solo il form di registrazione/login personalizzato o non creano queste pagine personali.
Sapresti indicarmi qualche plugin?
Quelli che ho provato sono:
WP Members
Register Plus Redux
Sideways8 private pages
Customer Area
S2member (che sto provando ora ma è alquanto “ostico”…)
Ciao Giovanni ti consiglio di utilizzare s2member, ti permette di creare pagine e aree personali per ciascun utente, puoi seguire la guida che ho linkato nell’articolo. Se ti serve aiuto posso svilppare un semplice plugin a pagamento, magari scrivimi una email per ulteriori dettagli 😉