Como posso inserir widgets padrão quando meu tema é ativado (semelhante ao que o número onze faz)?

3

Quando o tema Twenty Eleven é ativado, ele insere vários widgets padrão em suas barras laterais. Como posso codificar meu tema para fazer o mesmo?

    
por N2Mystic 05.12.2011 / 19:21

3 respostas

2

Johannes Pille está certo. Os widgets de TwentyEleven, como Archives e Meta, são codificados em sua sidebar.php

Aqui está o que eu faria:

Primeiro defina suas barras laterais em seu functions.php assim:

 if ( function_exists('register_sidebars') )
    register_sidebar(array(
    'name'=>'Left Sidebar',
    'before_title' => '<h2 class="label">',
        'after_title' => '</h2>',
    'description' => 'Items placed here will be shown in the left sidebar.'));

Como você pode ver no código acima, você está nomeando a barra lateral "Left Sidebar". Você pode mudar isso para o que quiser, mas eu geralmente escolho usar termos de posicionamento para que eu saiba em qual parte da página o widget será exibido.

Em seguida, você vai querer colocar isso no seu tema, onde você quer que a barra lateral apareça:

<?php if(function_exists('dynamic_sidebar') && dynamic_sidebar('Left Sidebar')):else: ?>

Agora você vai querer colocar isso em seguida:

<li id="calendar">
        <h2>
          <?php _e('Calendar'); ?>
        </h2>
        <?php get_calendar(); ?>
      </li>
      <?php wp_list_pages('title_li=<h2>Pages</h2>'); ?>
      <li>
        <h2>
          <?php _e('Categories'); ?>
        </h2>
        <ul>
          <?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=0'); ?>
        </ul>
      </li>
      <li>
        <h2>
          <?php _e('Archives'); ?>
        </h2>
        <ul>
          <?php wp_get_archives('type=monthly'); ?>
        </ul>
      </li>
      <?php get_links_list(); ?>
      <li>
        <h2>
          <?php _e('Meta'); ?>
        </h2>
        <ul>
          <?php wp_register(); ?>
          <li>
            <?php wp_loginout(); ?>
          </li>
          <?php wp_meta(); ?>
        </ul>
      </li>
      <?php endif; ?>
    </ul>

    

fecha a função "if" no início desta string. O que isso fará é que, se não houver nenhum lugar widegts na barra lateral, esses padrões aparecerão até que um seja adicionado.

Se você quiser tê-los lá o tempo todo sem que as pessoas o modifiquem, mas ainda assim quiser que eles possam adicionar conteúdo próprio, basta colocar os widgets codificados fora das declarações "if" como:

<li id="calendar">
        <h2>
          <?php _e('Calendar'); ?>
        </h2>
        <?php get_calendar(); ?>
      </li>
      <?php wp_list_pages('title_li=<h2>Pages</h2>'); ?>
      <li>
        <h2>
          <?php _e('Categories'); ?>
        </h2>
        <ul>
          <?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=0'); ?>
        </ul>
      </li>
      <li>
        <h2>
          <?php _e('Archives'); ?>
        </h2>
        <ul>
          <?php wp_get_archives('type=monthly'); ?>
        </ul>
      </li>
      <?php get_links_list(); ?>
      <li>
        <h2>
          <?php _e('Meta'); ?>
        </h2>
        <ul>
          <?php wp_register(); ?>
          <li>
            <?php wp_loginout(); ?>
          </li>
          <?php wp_meta(); ?>
        </ul>
      </li>

    </ul>
<?php if(function_exists('dynamic_sidebar') && dynamic_sidebar('Left Sidebar')):else: ?>
<?php endif; ?>

Sugiro que, para adicioná-los ao seu tema (no caso de você querer algo mais), consulte a referência da Função Codex do WordPress aqui: enlace

............................................... .................................................. .................................................. ..................

Veja como ter um conjunto de widgets padrão na área administrativa.

Primeiro você deve saber que o WordPress vem com 12 widgets padrão. Você pode visualizá-los aqui: enlace

Se você quiser remover alguns dos widgets padrão aqui, veja como faz isso:

function remove_some_wp_widgets(){
unregister_widget('WP_Widget_Calendar'); //removes calendar widget
unregister_widget('WP_Widget_Search'); // removes the search widget
unregister_widget('WP_Widget_Recent_Comments'); // removes recent comments widget 
}

add_action('widgets_init',remove_some_wp_widgets', 1);

Você adicionaria o código acima em seu arquivo functions.php do seu tema. Isso irá escondê-los. (não necessariamente removê-los)

Se você quiser adicionar um widget personalizado à área administrativa, sugiro que leia este artigo sobre como registrar um novo widget.

enlace

    
por Nicole 05.12.2011 / 21:04
9

Nas páginas da barra lateral de seus temas, você pode verificar se um widget está ativo na sua barra lateral e, em seguida, fazer um if, else.

//Check to see if your sidebar "main" is active.  Change to match your registered sidebar
if (is_active_sidebar('main')) {

    //echo holder div.  Give it a class for css
    echo '<div class="homeSidebar">';
    dynamic_sidebar('main');
    echo '</div>';
}

//if there is no active widget in this side bar, use this one.  
else {
    echo '<div class="homeSidebar">';

    //Run the_widget() to bring in the widget you want by default.  Take a look at http://codex.wordpress.org/Function_Reference/the_widget for more info
    the_widget('WP_Widget_Archives');
    echo '</div>';
}
    
por mgyura 05.12.2011 / 20:02
1

Os (pseudo-) widgets intitulados "Archives" e "Meta" são codificados em sidebar.php do TwentyEleven.

    
por Johannes Pille 05.12.2011 / 19:27