Cum să creezi mai multe widget-uri în WordPress utilizând bucle For & Foreach

Publicat: 2020-01-25

Cum să creezi mai multe widget-uri în WordPress Căutați o modalitate dinamică de a crea mai multe widget-uri în WordPress fără a scrie prea mult cod? Sau ați văzut o temă WordPress care vă permite să creați o bară laterală sau să creați mai multe widget-uri din tabloul de bord?

Într-un tutorial anterior, am explicat în detaliu cum să adăugați bara laterală în WordPress . Astăzi, în acest tutorial rapid, vă voi împărtăși o soluție rapidă pentru a crea mai multe widget-uri în WordPress din mers. Acest lucru nu numai că vă va economisi timp, dar veți reutiliza trucul în mai multe proiecte, mai ales dacă sunteți un dezvoltator profesionist WordPress ocupat.

Buclă pentru a crea mai multe bare laterale WordPress

În mod ideal, dorim să folosim o funcție care creează mai multe bare laterale WordPress folosind un fel de buclă . Când creați acest cod pentru prima temă sau plugin, îl veți reutiliza în dezvoltarea mai multor teme și pluginuri.

Această funcție poate fi, de asemenea, o bază pentru construirea unui generator dinamic de bară laterală utilizat într-o temă sau un plugin WordPress. Pentru a înțelege pe deplin cum funcționează acest cod, trebuie să fiți familiarizat cu procesul de creare a unei bare laterale WordPress , așa cum am explicat pe larg în acea postare.

Crearea de widgeturi WordPress

Widgeturile WordPress joacă un rol crucial în a ajuta utilizatorii să afișeze conținut nou în diferite secțiuni ale site-ului lor. În această postare despre cum să creați zone widget în WordPress ; Am împărtășit sfaturi importante și codul și, de asemenea, am explicat foarte clar în această postare despre cum să adăugați o bară laterală în WordPress .

Când aveți posibilitatea de a adăuga un widget în tema WordPress, este pur și simplu uimitor, deoarece puteți adăuga orice funcție nouă în toate secțiunile site-ului dvs.

Pentru o revizuire rapidă a modului de adăugare a barei laterale sau a zonei widget în WordPress, următorul cod ar trebui adăugat la functions.php pentru a înregistra o bară laterală ca prim pas atunci când adăugați un widget în tema dvs. WordPress:

 /**
* Înregistrați zona widget.
*/

funcția njengah_create_one_widget_tutorial() {

//Înregistrați funcția Sidebar - https://developer.wordpress.org/reference/functions/register_sidebar/

register_sidebar(

  matrice(
     'name' => __( 'Exemplu de widget Njengah ', 'textdomain' ),
     'id' => 'bara laterală-1',
     'description' => __( 'Adăugați widget-uri aici pentru a apărea în bara dvs. laterală.', 'textdomain' ),
     'before_widget' => '<section id="%1$s" class="widget %2$s">',
     'after_widget' => '</section>',
     'before_title' => '<h2 class="widget-title">',
     'after_title' => '</h2>',

   )

  );


}

add_action( 'widgets_init', 'njengah_create_one_widget_tutorial');

Aceasta este funcția register_sidebar() pe care o folosim pentru a adăuga un widget pe site-ul WordPress și widget-ul poate fi afișat acum în șablonul de pagină respectiv folosind funcția dynamic_sidebar() după cum urmează:

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

    <ul id="sidebar">

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

    </ul>

<?php endif; ?>

Crearea de bare laterale cu widget-uri multiple în WordPress

Deoarece codul pentru înregistrarea barei laterale a folosit funcția register_sidebar() pentru a crea mai multe bare laterale, trebuie doar să repetați acel cod de mai multe ori după cum doriți: Acum putem crea trei bare laterale repetând acest cod după cum urmează:

 /**
* Înregistrați 3 zone widget.
*/

funcția njengah_create_three_widget_tutorial() {

//Înregistrați bara laterală #1

register_sidebar(
   matrice(
       'name' => __( 'Njengah Sidebar 1 ', 'textdomain' ),
       'id' => 'bara laterală-1',
      'description' => __( 'Adăugați widget-uri aici pentru a apărea în bara dvs. laterală 1.', 'textdomain' ),
      'before_widget' => '<section id="%1$s" class="widget %2$s">',
      'after_widget' => '</section>',
      'before_title' => '<h2 class="widget-title">',
      'after_title' => '</h2>',
  )
);

//Înregistrați bara laterală #2

register_sidebar(
   matrice(
       'name' => __( 'Njengah Sidebar 2', 'textdomain' ),
        'id' => 'bara laterală-2',
        'description' => __( 'Adăugați widget-uri aici pentru a apărea în bara dvs. laterală 2.', 'textdomain' ),
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
        'after_widget' => '</section>',
        'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
     )
);

//Înregistrați bara laterală #3

register_sidebar(
   matrice(
       'name' => __( 'Njengah Sidebar 3 ', 'textdomain' ),
       'id' => 'bara laterală-3',
       'description' => __( 'Adăugați widget-uri aici pentru a apărea în bara dvs. laterală 3.', 'textdomain' ),
       'before_widget' => '<section id="%1$s" class="widget %2$s">',
       'after_widget' => '</section>',
       'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
      )
   );

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

Puteți crea din ce în ce mai multe zone de widget-uri repetând acest cod pe care îl utilizați pentru a înregistra widget-urile și totul funcționează și este cool.

Dar stai putin! Nu ați auzit despre o singură regulă sau programare fundamentală – DRY (Don’t Repeat Yourself)?

Acesta este un principiu simplu care înseamnă că codul dvs. ar trebui să fie eficient și ar trebui să evite astfel de repetări pentru a evita redundanța. Putem înlocui acest cod cu ceva mai bun, de exemplu, putem trece un argument funcției register_sidebar() pentru a o face de trei ori.

Creați mai multe widget-uri în WordPress cu un argument

Ne putem atinge obiectivul de a crea mai multe widget-uri în WordPress prin modificarea funcției register_sidebar() prin trecerea unei matrice de argumente ca al doilea parametru, iar primul parametru este numărul de widget-uri pe care dorim să le creăm. În acest caz, putem modifica codul partajat mai sus la acesta:

 funcția create_multiple_sidebar_widgets() {

$args = matrice(
    'name' => 'Bară laterală Njengah %d',
    'id' => 'njengah-sidebar',
    'description' => 'Una dintre barele laterale ale tutorialului Njengah',
    'class' => '',
    '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');

Valoarea numelui are un substituent %d care ne permite pur și simplu să afișăm barele laterale cu numerele 1,2 și 3.

Aceasta este o soluție rapidă pentru a crea mai multe widget-uri în WordPress, dar totuși, nu este soluția finală. Putem merge mai departe și o îmbunătățim, așa cum voi demonstra în curând.

Creați mai multe bare laterale cu matrice în WordPress

Soluția de mai sus nu este foarte eficientă deoarece titlul și descrierea sunt limitate doar la cele pe care le atribuiți în funcția register_sidebar ().

Pentru a îmbunătăți această soluție, putem introduce o matrice cu nume, ID-uri și descrieri, apoi folosim o buclă foreach pentru a înregistra barele laterale.

Următorul este un exemplu de creare a mai multor widget-uri folosind o matrice și o buclă foreach:

 funcția create_multiple_sidebar_widgets() {

$njengah_sidebars = matrice(
  matrice(
     'name' => 'Pagina principală a zonei widget',
     'id' => 'widget-area-homepage',
     'description' => 'Widget-uri afișate în pagina de pornire',
  ),
  matrice(
      'name' => 'Antet zona widgetului',
     'id' => 'widget-area-header',
     'description' => 'Widget-uri afișate în antet',
  ),
  matrice(
     'name' => 'Subsolul zonei widget',
     'id' => 'widget-area-footer',
     'description' => 'Widget-uri afișate în subsol',
   ),
  );

   $defaults = array(
      'name' => 'Bară laterală Njengah',
      'id' => 'njengah-sidebar',
      'description' => 'Bara laterală implicită este afișată în partea stângă a paginilor de blog în această temă',
       'class' => '',
      'before_widget' => '<li id="%1$s" class="widget %2$s">',
      'after_widget' => '</li>',
      'before_title' => '<h2 class="widgettitle">',
      'after_title' => '</h2>'
  );

  foreach( $njengah_sidebars ca $sidebar ) {

    $args = wp_parse_args( $bara laterală, $defaults );

    register_sidebar( $args );
   }

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

Această soluție vă oferă posibilitatea de a crea mai multe widget-uri în viitor, deoarece trebuie doar să adăugați fiecare detalii widget noi (nume, id și descriere) la matrice, iar widget-ul este creat din mers.

Creați mai multe widgeturi similare de subsol în WordPress

În cele din urmă, aceasta este cea mai bună abordare pentru a crea mai multe widget-uri în WordPress, deși a doua opțiune poate fi, de asemenea, utilă atunci când doriți mai multe widget-uri similare.

De exemplu, când doriți să creați mai multe widget-uri de subsol, poate fi mai ușor să utilizați bucla for după cum urmează:

 /**
* Înregistrați zona widget folosind bucla for
*
* @autorul Joe Njenga
*/

funcția njengah_register_sidebars_dynamically () {

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

       register_sidebar(

         matrice(
               'name' => esc_html__( 'Zona de subsol #', 'textdomain' ) . $i,
               'id' => 'footer-' . $i,
               'description' => sprintf( esc_html__( 'Coloana #%s din zona de subsol', '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');

Cred că aceasta poate fi una dintre cele mai utile soluții pentru crearea mai multor widget-uri în WordPress, deoarece bucla for pur și simplu numără până la 5 și creează 5 widget-uri, puteți doar să schimbați numărul cu orice alt număr de widget-uri doriți și mai multe widget-uri vor fi generate. dinamic din mers.

Încheierea

Am acoperit cele trei moduri diferite de a crea mai multe widget-uri în WordPress și sper că acesta este doar un început pentru a vă oferi impulsul de a crea modalități mai inovatoare de a crea mai multe bare laterale dinamice sau mai multe widget-uri în teme și plugin-uri WordPress. În cele din urmă, este important ca fiecare dezvoltator WordPress să învețe cum să folosească principiul DRY, deoarece nu numai că economisește timp, dar îmbunătățește eficiența codului.