Como criar vários widgets no WordPress usando loops For & Foreach

Publicados: 2020-01-25

Como criar vários widgets no WordPress Você está procurando uma maneira dinâmica de criar vários widgets no WordPress sem escrever muito código? Ou você já viu um tema WordPress que permite criar uma barra lateral ou criar vários widgets no painel?

Em um tutorial anterior, expliquei em detalhes como adicionar barra lateral no WordPress . Hoje, neste tutorial rápido, compartilharei com você uma solução rápida para criar vários widgets no WordPress em tempo real. Isso não apenas economizará seu tempo, mas você reutilizará o truque em vários projetos, especialmente se você for um desenvolvedor profissional do WordPress ocupado.

Loop para criar várias barras laterais do WordPress

Idealmente, queremos usar uma função que crie várias barras laterais do WordPress usando algum tipo de loop . Quando você cria este código para o primeiro tema ou plugin, você vai reutilizá-lo em mais desenvolvimento de temas e plugins.

Esta função também pode ser uma base para construir um gerador de barra lateral dinâmica usado em um tema ou plugin do WordPress. Para você entender completamente como esse código funciona, você precisa estar familiarizado com o processo de criação de uma barra lateral do WordPress , conforme expliquei detalhadamente nesse post.

Criando widgets do WordPress

Os widgets do WordPress desempenham um papel crucial para ajudar os usuários a exibir novos conteúdos em diferentes seções do site. Neste post sobre como criar áreas de widgets no WordPress ; Compartilhei dicas importantes e o código e também expliquei muito claramente neste post sobre como adicionar uma barra lateral no WordPress .

Quando você tem a capacidade de adicionar um widget no tema WordPress, é simplesmente incrível, pois você pode adicionar qualquer novo recurso em todas as seções do seu site.

Para uma rápida revisão de como adicionar a barra lateral ou área de widget no WordPress, o código a seguir deve ser adicionado ao functions.php para registrar uma barra lateral como o primeiro passo ao adicionar um widget em seu tema WordPress:

 /**
* Registre a área do widget.
*/

function njengah_create_one_widget_tutorial() {

//Registrar função da barra lateral - https://developer.wordpress.org/reference/functions/register_sidebar/

registrar_sidebar(

  variedade(
     'name' => __( 'Exemplo de Widget Njengah ', 'textdomain' ),
     'id' => 'barra lateral-1',
     'description' => __( 'Adicione widgets aqui para aparecer em sua barra lateral.', 'textdomain' ),
     'before_widget' => '<id da seção="%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');

Esta é a função register_sidebar() que estamos usando para adicionar um widget ao site WordPress e o widget agora pode ser exibido no respectivo modelo de página usando a função dynamic_sidebar() da seguinte forma:

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

    <ul id="barra lateral">

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

    </ul>

<?php endif; ?>

Criando várias barras laterais de widgets no WordPress

Como o código para registrar a barra lateral usou a função register_sidebar() para criar mais barras laterais, você só precisa repetir esse código várias vezes conforme desejar: Agora podemos criar três barras laterais repetindo este código da seguinte maneira:

 /**
* Registre 3 áreas de widgets.
*/

function njengah_create_three_widget_tutorial() {

//Registro Barra Lateral #1

registrar_sidebar(
   variedade(
       'name' => __( 'Njengah Sidebar 1 ', 'textdomain' ),
       'id' => 'barra lateral-1',
      'description' => __( 'Adicione widgets aqui para aparecer na sua barra lateral 1.', 'textdomain' ),
      'before_widget' => '<id da seção="%1$s" class="widget %2$s">',
      'after_widget' => '</section>',
      'before_title' => '<h2 class="widget-title">',
      'after_title' => '</h2>',
  )
);

//Registro Barra Lateral #2

registrar_sidebar(
   variedade(
       'name' => __( 'Njengah Sidebar 2', 'textdomain' ),
        'id' => 'barra lateral-2',
        'description' => __( 'Adicione widgets aqui para aparecer na sua barra lateral 2.', 'textdomain' ),
        'before_widget' => '<id da seção="%1$s" class="widget %2$s">',
        'after_widget' => '</section>',
        'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
     )
);

//Registro Barra Lateral #3

registrar_sidebar(
   variedade(
       'name' => __( 'Njengah Sidebar 3 ', 'textdomain' ),
       'id' => 'barra lateral-3',
       'description' => __( 'Adicione widgets aqui para aparecer na sua barra lateral 3.', 'textdomain' ),
       'before_widget' => '<id da seção="%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');

Você pode criar mais e mais áreas de widgets repetindo esse código que está usando para registrar os widgets e tudo funciona e é legal.

Mas espere um minuto! Você já ouviu falar de uma regra ou programação fundamental – DRY (Don't Repeat Yourself)?

Este é um princípio simples que significa que seu código deve ser eficiente e deve evitar tais repetições para evitar redundância. Podemos substituir este código por algo melhor, por exemplo, podemos passar um argumento para a função register_sidebar() para fazer isso três vezes.

Crie vários widgets no WordPress com um argumento

Podemos atingir nosso objetivo de criar vários widgets no WordPress alterando a função register_sidebar() passando um array de argumentos como segundo parâmetro e o primeiro parâmetro é o número de widgets que queremos criar. Nesse caso, podemos alterar o código compartilhado acima para isso:

 function create_multiple_sidebar_widgets() {

$args = array(
    'name' => 'Njengah Barra Lateral %d',
    'id' => 'njengah-barra lateral',
    'description' => 'Uma das barras laterais do tutorial Njengah',
    'classe' => '',
    'before_widget' => '<li id="%1$s" class="widget %2$s">',
    'after_widget' => '</li>',
    'before_title' => '<h2 class="widgettitle">',
    'after_title' => '</h2>'
 );

  registrar_sidebar(3, $args);

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

O valor do nome tem um espaço reservado %d que simplesmente nos permite exibir as barras laterais com os números 1,2 e 3.

Esta é uma solução rápida para criar vários widgets no WordPress, mas ainda assim, não é a solução definitiva. Podemos ir em frente e melhorá-lo, como demonstrarei em breve.

Crie várias barras laterais com array no WordPress

A solução acima não é muito eficaz, pois o título e a descrição são limitados apenas aos que você atribui na função register_sidebar().

Para tornar esta solução melhor, podemos introduzir um array com nomes, ids e descrições, então usamos um loop foreach para registrar as barras laterais.

Veja a seguir um exemplo de criação de vários widgets usando uma matriz e um loop foreach:

 function create_multiple_sidebar_widgets() {

$njengah_sidebars = array(
  variedade(
     'name' => 'Página inicial da área de widget',
     'id' => 'widget-área-homepage',
     'description' => 'Widgets mostrados na página inicial',
  ),
  variedade(
      'name' => 'Cabeçalho da área do widget',
     'id' => 'cabeçalho de área de widget',
     'description' => 'Widgets mostrados no cabeçalho',
  ),
  variedade(
     'name' => 'Rodapé da área do widget',
     'id' => 'widget-área-rodapé',
     'description' => 'Widgets mostrados no rodapé',
   ),
  );

   $defaults = array(
      'name' => 'Njengah Barra Lateral',
      'id' => 'njengah-barra lateral',
      'description' => 'A barra lateral padrão é mostrada no lado esquerdo das páginas do blog neste 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 lateral, $defaults);

    registrar_sidebar( $args);
   }

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

Essa solução oferece a capacidade de criar vários widgets no futuro, pois você só precisa adicionar todos os novos detalhes do widget (nome, id e descrição) à matriz e o widget é criado na hora.

Crie vários widgets de rodapé semelhantes no WordPress

Em última análise, esta é a melhor abordagem para criar vários widgets no WordPress, embora a segunda opção também possa ser útil quando você deseja vários widgets semelhantes.

Por exemplo, quando você deseja criar vários widgets de rodapé, pode ser mais fácil usar o loop for da seguinte forma:

 /**
* Registre a área do widget usando o loop for
*
* @autor Joe Njenga
*/

function njengah_register_sidebars_dynamically() {

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

       registrar_sidebar(

         variedade(
               'name' => esc_html__( 'Área de Rodapé #', 'textdomain' ) . $i,
               'id' => 'rodapé-' . $i,
               'description' => sprintf( esc_html__( 'A coluna #%s na área de rodapé', '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' );

Eu acho que essa pode ser uma das soluções mais úteis para criar vários widgets no WordPress, pois o loop for simplesmente conta até 5 e cria 5 widgets, você pode alterar o número para qualquer outro número de widgets que desejar e os vários widgets serão gerados dinamicamente em movimento.

Empacotando

Cobrimos as três maneiras diferentes de criar vários widgets no WordPress e espero que este seja apenas um começo para dar a você o impulso para criar maneiras mais inovadoras de criar várias barras laterais dinâmicas ou vários widgets em temas e plugins do WordPress. Por fim, é importante que todo desenvolvedor do WordPress aprenda a usar o princípio DRY, pois não apenas economiza tempo, mas também melhora a eficiência do código.