Neste artigo vamos analisar algumas formas de usar a função de registo da barra lateral do WordPress juntamente com algumas dicas avançadas também!

WordPress Register Sidebar – Único

Para ter uma barra lateral trabalhando em seu tema, você precisará informar o WordPress primeiro – para ter certeza de que ela apareça no administrador – e adicionar algum código front-end para exibir os widgets. Para registrar uma barra lateral você pode escolher uma de duas opções: registrar uma barra lateral com register_sidebar() ou registrar muitas ao mesmo tempo com register_sidebars().

O uso básico da função register_sidebar() é algo parecido com isto:

add_action( 'widgets_init', 'my_awesome_sidebar' );
function my_awesome_sidebar() {
  $args = array(
    'name'          => 'Awesome Sidebar',
    'id'            => 'awesome-sidebar',
    'description'   => 'The Awesome Sidebar is shown on the left hand side of blog pages in this theme',
    'class'         => '',
    'before_widget' => '<li id="%1$s" class="widget %2$s">',
    'after_widget'  => '</li>',
    'before_title'  => '<h2 class="widgettitle">',
    'after_title'   => '</h2>' 
  );

  register_sidebar( $args );

}

As funções devem ser chamadas a partir de uma função ligada a widgets_init e é necessário um único array de parâmetros. O nome e descrição são mostrados no backend quando o usuário está montando a barra lateral, e os últimos quatro parâmetros são usados para exibir cada widget.

Os parâmetros de antes e depois do título são pré-pensos e anexados ao título e os parâmetros de antes e depois do widget são adicionados antes e depois do elemento widget. Isto permite um estilo uniforme através de toda uma barra lateral de widgets.

WordPress Register Sidebar – Várias barras laterais de uma só vez

A função register_sidebars() é quase exatamente a mesma que sua forma singular irmão, mas toma um parâmetro extra que dita o número de barras laterais a adicionar. Aqui está um exemplo rápido:

add_action( 'widgets_init', 'my_theme_sidebars' );
function my_theme_sidebars() {
  $args = array(
    'name'          => 'Awesome Sidebar %d',
    'id'            => 'awesome-sidebar',
    'description'   => 'One of the awesome sidebars',
    '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 );

}

A única outra diferença aqui é o uso do %d placeholder que irá exibir o número da barra lateral, no nosso caso 1, 2 ou 3.

Registar Melhor Múltiplas Barras Laterais

O único problema com a função acima é que ela não permite realmente personalizar o título e a descrição, e o uso do parâmetro “id” é tecnicamente incorreto, pois deve ser único. Para contornar este problema, eu normalmente configuro um conjunto de informações e faço um loop através disso para criar minhas barras laterais, aqui está como.

add_action( 'widgets_init', 'my_awesome_sidebar' );
function my_awesome_sidebar() {

  $my_sidebars = array(
    array(
      'name'          => 'Header Widget Area',
      'id'            => 'header-widget-area',
      'description'   => 'Widgets shown in the flyout of the header',
    ),
    array(
      'name'          => 'Header Widget Area',
      'id'            => 'header-widget-area',
      'description'   => 'Widgets shown in the flyout of the header',
    ),
    array(
      'name'          => 'Header Widget Area',
      'id'            => 'header-widget-area',
      'description'   => 'Widgets shown in the flyout of the header',
    ),  
  );

  $defaults = array(
    'name'          => 'Awesome Sidebar',
    'id'            => 'awesome-sidebar',
    'description'   => 'The Awesome Sidebar is shown on the left hand side of blog pages in this theme',
    'class'         => '',
    'before_widget' => '<li id="%1$s" class="widget %2$s">',
    'after_widget'  => '</li>',
    'before_title'  => '<h2 class="widgettitle">',
    'after_title'   => '</h2>' 
  );

  foreach( $my_sidebars as $sidebar ) {
    $args = wp_parse_args( $sidebar, $defaults );
    register_sidebar( $args );
  }

}

Antes de mais nada, defini uma série de barras laterais com os parâmetros que preciso que sejam alterados por barra lateral. Eu também criei um conjunto de parâmetros padrão que pode ser usado caso não haja dados em algum lugar. Enquanto fazemos looping através do nosso array de barras laterais, nós fundimos o array de argumentos específicos da barra lateral com os defaults e os passamos para a função register_sidebar().

Se você quer ficar realmente chique, você pode separar o array da barra lateral desta função e criar sua própria função que você pode reutilizar de tema para tema, tudo que você precisa fazer é modificar o array de barras laterais.

Isso lhe dá mais controle e mais padronização em todo o seu trabalho, o que é ótimo se você oferecer atualizações e suporte.

Resumo

Desde que você use as funções padrão do WordPress, não importa realmente como você registra suas barras laterais, mas se você faz regularmente trabalhos relacionados a temas ou quer começar a criar alguns trechos reutilizáveis, eu recomendo altamente o uso de loops e matrizes de dados.

Eu pessoalmente não gosto da função register_sidebars() porque ela leva ao HTML inválido em muitos casos e não lhe dá tanto controle quanto você deveria ter em um cenário de tema adequado.

Leitura sugerida: Como remover a barra lateral no WordPress (4 Métodos).

Daniel Pataki

Hi, my name is Daniel, I'm the CTO here at Kinsta. You may know me from Smashing Magazine, WPMU Dev, Tuts+ and other WordPress/Development magazines. Aside from WordPress and PHP I spend most of my time around Node, React, GraphQL and other technologies in the Javascript space.

When not working on making the best hosting solution in the Universe I collect board games, play table football in the office, travel or play guitar and sing in a pretty bad band.