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

Oi, meu nome é Daniel, sou o CTO aqui na Kinsta. Você talvez me conheça da Smashing Magazine, WPMU Dev, Tuts+ e outras revistas de WordPress/Desenvolvimento. Além de WordPress e PHP, passo a maior parte do meu tempo com Node, React, GraphQL e outras tecnologias no espaço Javascript. Quando não estou trabalhando para criar a melhor solução de hospedagem do universo, coleciono jogos de tabuleiro, jogo pebolim no escritório, viajo ou toco guitarra e canto em uma banda não muito boa.