Come Installare WordPress su Docker

WP Docker

Docker è un software open-source che automatizza il deployment di applicazioni utilizzando le funzionalità di isolamento delle risorse del kernel Linux per generare un sistema di container che eseguono processi in ambienti isolati. Un container non include un sistema operativo separato, come una Virtual Machine, ma sfrutta l’isolamento delle risorse propria del kernel Linux.
Docker opera, quindi, una virtualizzazione a livello di sistema operativo e non a livello di macchina, come invece avviene per le Vistual Machine. Ma di cosa si tratta precisamente? Leggi tutto “Come Installare WordPress su Docker”

WordPress 4.9

Logo WP

WordPress 4.9 Beta 4 è stato rilasciato ed è disponibile per il testing. La seconda Major release di quest’anno segna un forte passo in avanti verso un modo di utilizzo della piattaforma maggiormente incentrato sull’utente e porta con sé notevoli miglioramenti al Customizer, nuove funzionalità per i widget ed un potente editor di testo per l’inserimento di codice.
Ne parlo su Kinsta

Aggiungere il nome utente ad un custom menu

Logo WP

A volte potrebbe essere utile (o necessario) creare una voce di menu che abbia come etichetta il nome dell’utente corrente. Nell’articolo precedente ho fornito il codice che utilizzo per creare uno shortcode che genera una stringa con il dato desiderato. Ad esempio:

[userdata user_email]

Ovviamente, lo shortcode non può essere inserito come etichetta di una voce di menu, dato che WordPress elimina le parentesi quadre.

Però si può aggirare l’ostacolo…

Si riprenda il codice che genera lo shortocode dell’articolo precedente:


// create [userdata] shortcode
function get_current_userdata_cb( $atts ){
    if ( is_user_logged_in() ) { 
        // get the current user
        $cu = wp_get_current_user();

        switch ( $atts[0] ) {
            case 'user_login':
                return $cu->user_login;
                break;
            case 'user_email':
                return $cu->user_email;
                break;
            case 'user_firstname':
                return $cu->user_firstname;
                break;
            case 'user_lastname':
                return $cu->user_lastname;
                break;
            case 'display_name':
                return $cu->display_name;
                break;
            case 'ID':
                return $cu->ID;
                break;
            default:
                return $cu->user_login;
                break;
        }

    }else{
        return '';
    }
}
add_shortcode( 'userdata', 'get_current_userdata_cb' );

Ora che si ha a disposizione lo shortocode, si può utilizzare la stessa funzione per creare dinamicamente il titolo della voce di menu:


/**
 * Build custom menu item's title
 *
 * @param WP_Post[] $menu_items
 *
 * @return WP_Post[]
 */
function my_dynamic_menu_items( $menu_items ) {
    
    $sc_atts = array( '#user_login#', '#user_email#', '#user_firstname#', '#user_lastname#', '#display_name#', '#ID#' );

    foreach ( $menu_items as $menu_item ) {

        if ( in_array( $menu_item->title, $sc_atts )){

            global $shortcode_tags;

            if ( isset( $shortcode_tags['userdata'] ) ) {

                $user = do_shortcode( '[userdata ' . str_replace( '#', '', $menu_item->title ) . ']' );
                $menu_item->title = $user;
            }
        }
    }

    return $menu_items;
}
add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' );

La funzione di callback my_dynamic_menu_items accetta come argomento un array contenente tutte le voci di menu esistenti nel database.
$sc_atts è un array i cui elementi sono costituiti dalle stringhe che è possibile utilizzare nella pagina di creazione dei menu per generare dinamicamente il titolo del singolo elemento.

Il ciclo foreach itera tra tutti gli elementi di menu, mentre la condizione successiva verifica se la stringa inserita dall’utente trova una corrispondenza nell’array $sc_atts.

In caso positivo, viene eseguito lo shortcode. L’attributo sarà generato dinamicamente in base alla stringa inserita come titolo.

shortcode menu title

Uno shortcode per visualizzare i dati utente

Logo WP

Spesso è necessario mandare a video uno o alcuni dei dati associati al profilo dell’utente collegato (nickname, indirizzo email, nome, cognome o ID).

Per eseguire il task è necessario istallare un plugin, oppure aggiungere un po’ di codice al file functions.php del tema corrente.

In casi del genere, una soluzione efficiente potrebbe essere quella di creare uno shortcode, in modo che l’amministratore del sito possa aggiungere questi dati ovunque ne abbia bisogno.

Si supponga di voler creare lo shortcode [userdata].

Allo shortocode potrà essere assegnato uno (ed uno solo) dei seguenti attributi:

  • user_login
  • user_email
  • user_firstname
  • user_lastname
  • display_name
  • ID

Ecco il codice:


// create [userdata] shortcode
function get_current_userdata_cb( $atts ){
    if ( is_user_logged_in() ) { 
        // get the current user
        $cu = wp_get_current_user();

        switch ( $atts[0] ) {
            case 'user_login':
                return $cu->user_login;
                break;
            case 'user_email':
                return $cu->user_email;
                break;
            case 'user_firstname':
                return $cu->user_firstname;
                break;
            case 'user_lastname':
                return $cu->user_lastname;
                break;
            case 'display_name':
                return $cu->display_name;
                break;
            case 'ID':
                return $cu->ID;
                break;
            default:
                return $cu->user_login;
                break;
        }

    }else{
        return '';
    }
}
add_shortcode( 'userdata', 'get_current_userdata_cb' );

Se l’utente è collegato (is_user_logged_in), viene creata un’istanza della classe WP_User (wp_get_current_user).

Il primo attributo passato allo shortcode (atts[0]) viene confrontato con i possibili valori delle proprietà dell’oggetto WP_User ($cu->{$prop}).
Individuata la corrispondenza, viene restituito il valore della proprietà e interrotta l’esecuzione della funzione.

Ora basterà inserire in un post lo shortcode [userdata display_name] per visualizzare il nome dell’utente autenticato generato dinamicamente da WordPress.