it-swarm-pt.tech

Como register_sidebar () e get_sidebar () funcionam juntos?

Disclaimer: Eu sou nova novidade para WP.

Estou usando o tema do framework Starkers HTML5 . No functions.php eu vejo este código:

function starkers_widgets_init() {

  // Area 1, located at the top of the sidebar.
  register_sidebar( array(
    'name' => __( 'Primary Widget Area', 'starkers' ),
    'id' => 'primary-widget-area',
    'description' => __( 'The primary widget area', 'starkers' ),
    'before_widget' => '<li>',
    'after_widget' => '</li>',
    'before_title' => '<h3>',
    'after_title' => '</h3>',
  ) );

  // Area 3, located in the footer. Empty by default.
  register_sidebar( array(
    'name' => __( 'First Footer Widget Area', 'starkers' ),
    'id' => 'first-footer-widget-area',
    'description' => __( 'The first footer widget area', 'starkers' ),
    'before_widget' => '<li>',
    'after_widget' => '</li>',
    'before_title' => '<h3>',
    'after_title' => '</h3>',
  ) );

  // ... more calls to register_sidebar() ... 
}

E em footer.php eu vejo este código:

<?php get_sidebar( 'footer' ); ?>

Eu não entendo como get_sidebar() sabe como pegar esse argumento de string e encontrar os widgets apropriados que foram definidos por register_sidebar(). No trecho functions.php eu postei acima. Não há menção ao "rodapé", exceto pelas propriedades name, id e description. Mas parece estranho para mim que get_sidebar() procure por 'footer' dentro dessas propriedades.

Isso faz sentido com o que estou perguntando? Há alguma peça que falta?

As razões que eu estou perguntando é porque - eu gostaria de saber mais sobre a arquitetura WP - eu gostaria de poder definir uma área de widget customizada e saber como renderizá-la em uma página específica.

Obrigado uma tonelada.

7
jessegavin

Você acabou de chamar get_sidebar() from index.php e carrega o arquivo de tema sidebar.php.

register_sidebar() , por outro lado, é usado para widgets em que plugins e outros desejam adicionar dinamicamente conteúdo em seu arquivo sidebar.php se o seu tema for compatível.

No seu caso, existe um arquivo chamado sidebar-footer.php no diretório do seu tema?

9
john010117

Eu nunca me incomodei com get_sidebar(). Em vez disso, uso apenas dynamic_sidebar(). Você chamaria assim:

dynamic_sidebar('first-footer-widget-area');

E isso cuida de toda a barra lateral. Não há mais inclusões de arquivos, não há mais pastas de tema desordenadas. Se eu quiser ter 5 barras laterais diferentes, ele não adiciona nenhum arquivo, apenas funções extras em functions.php.

7
John P Bloch

get_sidebar('name') obtém um modelo de barra lateral do nome sidebar-name.php.

Dentro do sidebar-name.php, existe o HTML para a barra lateral e uma chamada para dynamic_sidebar('some-name-hopefully-the-same'), que é onde os widgets irão.

register_sidebar(array(name=>'some-name-hopefully-the-same', ...)) é o que permite que o dynamic_sidebar funcione.

Como você pode ver, get_sidebar(templatename) é para uso com modelos da barra lateral. Se você não precisa deles, basta chamar dynamic_sidebar(sidebarname) diretamente do seu tema.

4
Gerard ONeill

get_sidebar('footer') tenta carregar sidebar-footer.php do tema ativo. Starkers fornece esse arquivo. Verifique starkers/sidebar-footer.php e as coisas devem ficar claras.

3
Annika Backstrom