Come creare più widget in WordPress usando For & Foreach Loops

Pubblicato: 2020-01-25

Come creare più widget in WordPress Stai cercando un modo dinamico per creare più widget in WordPress senza scrivere troppo codice? Oppure hai visto un tema WordPress che ti consente di creare una barra laterale o creare più widget dalla dashboard?

In un tutorial precedente, ho spiegato in dettaglio come aggiungere la barra laterale in WordPress . Oggi, in questo breve tutorial, condividerò con te una rapida soluzione per creare al volo più widget in WordPress. Questo non solo ti farà risparmiare tempo, ma riutilizzerai il trucco in più progetti, specialmente se sei uno sviluppatore WordPress professionista impegnato.

Ciclo per creare più barre laterali di WordPress

Idealmente, vogliamo utilizzare una funzione che crei più barre laterali di WordPress usando una sorta di loop . Quando crei questo codice per il primo tema o plugin, lo riutilizzerai in più temi e sviluppo di plugin.

Questa funzione può anche essere una base per la creazione di un generatore di barra laterale dinamico utilizzato in un tema o in un plug-in di WordPress. Per capire appieno come funziona questo codice, devi avere dimestichezza con il processo di creazione di una barra laterale di WordPress , come ho spiegato a fondo in quel post.

Creazione di widget WordPress

I widget di WordPress svolgono un ruolo cruciale nell'aiutare gli utenti a visualizzare nuovi contenuti in diverse sezioni del loro sito web. In questo post su come creare aree widget in WordPress ; Ho condiviso suggerimenti importanti e il codice e ho anche spiegato molto chiaramente in questo post come aggiungere una barra laterale in WordPress .

Quando hai la possibilità di aggiungere un widget nel tema WordPress, è semplicemente fantastico poiché puoi aggiungere qualsiasi nuova funzionalità in tutte le sezioni del tuo sito.

Per una rapida rassegna di come aggiungere la barra laterale o l'area dei widget in WordPress, è necessario aggiungere il seguente codice a functions.php per registrare una barra laterale come primo passaggio quando si aggiunge un widget nel tema WordPress:

 /**
* Registra area widget.
*/

funzione njengah_create_one_widget_tutorial() {

//Registra la funzione della barra laterale - https://developer.wordpress.org/reference/functions/register_sidebar/

register_sidebar(

  Vettore(
     'name' => __( 'Esempio di widget Njengah ', 'dominio di testo' ),
     'id' => 'barra laterale-1',
     'description' => __( 'Aggiungi qui i widget da visualizzare nella barra laterale.', 'textdomain' ),
     'before_widget' => '<section id="%1$s" class="widget %2$s">',
     'after_widget' => '</sezione>',
     'before_title' => '<h2 class="widget-title">',
     'after_title' => '</h2>',

   )

  );


}

add_action( 'widgets_init', ' njengah_create_one_widget_tutorial');

Questa è la funzione register_sidebar() che stiamo usando per aggiungere un widget al sito WordPress e il widget può ora essere visualizzato nel rispettivo modello di pagina usando la funzione dynamic_sidebar() come segue:

 <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>

    <ul id="barra laterale">

      <?php dynamic_sidebar('sidebar-1'); ?>

    </ul>

<?php endif; ?>

Creazione di più barre laterali di widget in WordPress

Poiché il codice per registrare la barra laterale utilizza la funzione register_sidebar() per creare più barre laterali, devi solo ripetere quel codice più volte come desideri: ora possiamo creare tre barre laterali ripetendo questo codice come segue:

 /**
* Registra 3 aree widget.
*/

funzione njengah_create_three_widget_tutorial() {

//Registra la barra laterale n. 1

register_sidebar(
   Vettore(
       'nome' => __( 'Njengah Sidebar 1 ', 'dominio di testo' ),
       'id' => 'barra laterale-1',
      'description' => __( 'Aggiungi qui i widget da visualizzare nella barra laterale 1.', 'textdomain' ),
      'before_widget' => '<section id="%1$s" class="widget %2$s">',
      'after_widget' => '</sezione>',
      'before_title' => '<h2 class="widget-title">',
      'after_title' => '</h2>',
  )
);

//Registra la barra laterale n. 2

register_sidebar(
   Vettore(
       'nome' => __( 'Njengah Sidebar 2', 'dominio di testo' ),
        'id' => 'barra laterale-2',
        'description' => __( 'Aggiungi widget qui da visualizzare nella barra laterale 2.', 'textdomain' ),
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
        'after_widget' => '</sezione>',
        'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
     )
);

//Registra la barra laterale n. 3

register_sidebar(
   Vettore(
       'nome' => __( 'Njengah Sidebar 3 ', 'dominio di testo' ),
       'id' => 'barra laterale-3',
       'description' => __( 'Aggiungi widget qui per apparire nella barra laterale 3.', 'textdomain' ),
       'before_widget' => '<section id="%1$s" class="widget %2$s">',
       'after_widget' => '</sezione>',
       'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
      )
   );

}
add_action( 'widgets_init', 'njengah_create_three_widget_tutorial');

Puoi creare sempre più aree widget ripetendo questo codice che stai utilizzando per registrare i widget e tutto funziona ed è fantastico.

Ma aspetta un minuto! Non hai sentito parlare di una regola o programmazione fondamentale: DRY (non ripetere te stesso)?

Questo è un semplice principio che significa che il tuo codice dovrebbe essere efficiente e dovrebbe evitare tali ripetizioni per evitare la ridondanza. Possiamo sostituire questo codice con qualcosa di meglio, ad esempio, possiamo passare un argomento alla funzione register_sidebar() per farlo tre volte.

Crea più widget in WordPress con un argomento

Possiamo raggiungere il nostro obiettivo di creare più widget in WordPress alterando la funzione register_sidebar() passando un array di argomenti come secondo parametro e il primo parametro è il numero di widget che vogliamo creare. In questo caso, possiamo modificare il codice condiviso sopra in questo:

 funzione create_multiple_sidebar_widgets() {

$args = array(
    'nome' => 'Barra laterale Njengah %d',
    'id' => 'njengah-barra laterale',
    'description' => 'Una delle barre laterali del tutorial di Njengah',
    'classe' => '',
    'before_widget' => '<li id="%1$s" class="widget %2$s">',
    'after_widget' => '</li>',
    'before_title' => '<h2 class="widgettitle">',
    'after_title' => '</h2>'
 );

  register_sidebar( 3, $args );

}
add_action( 'widgets_init', 'create_multiple_sidebar_widgets');

Il valore del nome ha un segnaposto %d che ci permette semplicemente di visualizzare le barre laterali con i numeri 1,2 e 3.

Questa è una soluzione rapida per creare più widget in WordPress, ma non è comunque la soluzione definitiva. Possiamo andare avanti e migliorarlo come dimostrerò a breve.

Crea più barre laterali con Array in WordPress

La soluzione sopra non è molto efficace poiché il titolo e la descrizione sono limitati solo a quelli assegnati nella funzione register_sidebar().

Per migliorare questa soluzione possiamo introdurre un array con nomi, ID e descrizioni, quindi utilizziamo un ciclo foreach per registrare le barre laterali.

Quello che segue è un esempio di creazione di più widget utilizzando un array e un ciclo foreach:

 funzione create_multiple_sidebar_widgets() {

$njengah_barre laterali = array(
  Vettore(
     'nome' => 'Pagina iniziale dell'area widget',
     'id' => 'widget-area-homepage',
     'description' => 'Widget mostrati nella home page',
  ),
  Vettore(
      'nome' => 'Intestazione area widget',
     'id' => 'intestazione-area-widget',
     'description' => 'Widget mostrati nell'intestazione',
  ),
  Vettore(
     'nome' => 'Piè di pagina dell'area widget',
     'id' => 'widget-area-footer',
     'description' => 'Widget mostrati nel footer',
   ),
  );

   $predefinito = array(
      'nome' => 'Barra laterale Njengah',
      'id' => 'njengah-barra laterale',
      'description' => 'La barra laterale predefinita è mostrata sul lato sinistro delle pagine del blog in questo tema',
       'classe' => '',
      'before_widget' => '<li id="%1$s" class="widget %2$s">',
      'after_widget' => '</li>',
      'before_title' => '<h2 class="widgettitle">',
      'after_title' => '</h2>'
  );

  foreach($njengah_sidebars as $sidebar) {

    $args = wp_parse_args($barra laterale, $predefiniti);

    register_sidebar($args);
   }

}
add_action( 'widgets_init', 'create_multiple_sidebar_widgets');

Questa soluzione ti dà la possibilità di creare più widget in futuro poiché devi solo aggiungere i dettagli di ogni nuovo widget (nome, id e descrizione) all'array e il widget viene creato al volo.

Crea più widget di piè di pagina simili in WordPress

In definitiva questo è l'approccio migliore per creare più widget in WordPress, anche se la seconda opzione può tornare utile anche quando desideri più widget simili.

Ad esempio, quando desideri creare più widget a piè di pagina, può essere più semplice utilizzare il ciclo for come segue:

 /**
* Registra l'area widget utilizzando for loop
*
* @autore Joe Njenga
*/

funzione njengah_register_sidebars_dynamically() {

    for ( $i = 1, $n = 5; $i <= $n; $i++ ) {

       register_sidebar(

         Vettore(
               'name' => esc_html__( 'Area piè di pagina #', 'dominio di testo' ) . $ io,
               'id' => 'piè di pagina-' . $ io,
               'description' => sprintf( esc_html__( 'La colonna #%s nell'area footer', 'textdomain' ), $i ),
               'before_widget' => '<aside id="%1$s" class="widget %2$s">',
               'after_widget' => '</aside>',
               'before_title' => '<h3 class="widget-title">',
              'after_title' => '</h3>',
           )
        );
     }
   }
}
add_action('widgets_init', 'njengah_register_sidebars_dynamically');

Penso che questa possa essere una delle soluzioni più utili per creare più widget in WordPress poiché il ciclo for conta semplicemente fino a 5 e crea 5 widget, puoi semplicemente cambiare il numero in qualsiasi altro numero di widget che desideri e verranno generati più widget dinamicamente al volo.

Avvolgendo

Abbiamo trattato i tre diversi modi per creare più widget in WordPress e spero che questo sia solo un inizio per darti lo slancio per creare modi più innovativi di creare più barre laterali dinamiche o più widget in temi e plugin di WordPress. Infine, è importante che ogni sviluppatore di WordPress impari come utilizzare il principio DRY poiché non solo fa risparmiare tempo ma migliora l'efficienza del codice.