Adicione a área da barra lateral ao header do tema infantil

Como posso adicionar alguns locais de barra lateral extra para widgets em um tema filho. A dificuldade que estou tendo é porque o tema pai usa uma configuração bastante gentil para definir as barras laterais atuais.

Gostaria de adicionar uma área de barra lateral ao header do meu site e outra barra lateral ao modelo de casa.

O arquivo functions.php do tema pai começa com:

<?php add_action( 'after_setup_theme', 'et_setup_theme' ); if ( ! function_exists( 'et_setup_theme' ) ){ function et_setup_theme(){ global $themename, $shortname; $themename = "Chameleon"; $shortname = "chameleon"; require_once(TEMPLATEPATH . '/epanel/custom_functions.php'); require_once(TEMPLATEPATH . '/includes/functions/comments.php'); require_once(TEMPLATEPATH . '/includes/functions/sidebars.php'); load_theme_textdomain('Chameleon',get_template_directory().'/lang'); require_once(TEMPLATEPATH . '/epanel/options_chameleon.php'); require_once(TEMPLATEPATH . '/epanel/core_functions.php'); require_once(TEMPLATEPATH . '/epanel/post_thumbnails_chameleon.php'); include(TEMPLATEPATH . '/includes/widgets.php'); add_action( 'wp_enqueue_scripts', 'et_add_responsive_shortcodes_css', 11 ); add_action( 'pre_get_posts', 'et_home_posts_query' ); add_action( 'et_epanel_changing_options', 'et_delete_featured_ids_cache' ); add_action( 'delete_post', 'et_delete_featured_ids_cache' ); add_action( 'save_post', 'et_delete_featured_ids_cache' ); } } 

Onde “require_once (TEMPLATEPATH. ‘/includes/functions/sidebars.php’);” é a única referência às barras laterais neste arquivo.

Portanto, o arquivo sidebars.php no diretório include contém o seguinte:

  'Sidebar', 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', )); register_sidebar(array( 'name' => 'Footer', 'before_widget' => ' ', 'before_title' => '

', 'after_title' => '

', )); register_sidebar(array( 'name' => 'Homepage', 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', )); } ?>

Há um arquivo sidebar.php no diretório raiz do tema que contém o seguinte:

   

Então, vamos (para agora) trabalhar com a adição de uma nova área da barra lateral ao modelo de casa … O modelo home.php (que eu tenho uma cópia modificada na pasta do meu tema filho) contém as seguintes referências às barras laterais:

   

e logo antes do fim do código para este modelo …

  

A estrutura do diretório da pasta de meus temas aparece assim:

mywebsiteroot> wp-content> themes> Chameleon> inclui | home.php
mywebsiteroot> wp-content> themes> Chameleon> inclui | functions.php
mywebsiteroot> wp-content> themes> Chameleon> inclui | sidebar.php
mywebsiteroot> wp-content> themes> Chameleon> inclui | style.css
mywebsiteroot> wp-content> themes> Chameleon> inclui> funções> sidebar.php
mywebsiteroot> wp-content> themes> Chameleon> inclui> css> outras folhas de estilo …

mywebsiteroot> wp-content> themes> lppscustom | home.php
mywebsiteroot> wp-content> themes> lppscustom | header.php
mywebsiteroot> wp-content> themes> lppscustom | footer.php
mywebsiteroot> wp-content> themes> lppscustom | style.css

E … aqui é onde estou preso. Eu sei que você pode ter seus próprios arquivos personalizados functions.php e sidebar.php na pasta do tema filho, mas como eu os estruturo? Preciso include todos os códigos dos arquivos do tema pai? Em caso afirmativo, como faço para modificar o código, então qualquer referência aos subdiretórios é relativa? Caso contrário, como faço para carregar o arquivo de function e o arquivo da barra lateral do tema pai, bem como os meus customizados?

Qualquer ajuda seria muito apreciada.

Solutions Collecting From Web of "Adicione a área da barra lateral ao header do tema infantil"

Functions.php é compartilhado para temas pai / filho diferente de outros arquivos que serão substituídos. O que isso significa é que o WordPress irá carregar as funções pai e filho.php.

No seu caso, parece que você simplesmente criaria um filho functions.php e, em seguida, crie uma nova register_sidebar .

Em seguida, use dynamic_sidebar sempre que desejar no seu modelo de tema para chamar sua nova barra lateral.

Na minha opinião, o melhor método para temas filho é tentar evitar arquivos duplicados tanto quanto possível, mantenha o pai carregado como está e crie seus próprios arquivos filho personalizados. Claro que você terá que replace alguns arquivos, mas tente mantê-lo modular.

Se o seu tema usar quaisquer valores de caminho codificados e chamadas de function imprópria para a inclusão de arquivos, substitua-o através do tema filho quebrará coisas, a menos que você duplique a estrutura (exceto para functions.php ).

Para referência: http://codex.wordpress.org/Determining_Plugin_and_Content_Directories

Por exemplo:
get_stylesheet_directory_uri usará a criança
get template directory uri não