Miglior modo per creare sidebar multiple
Sono ben consapevole di come creare sidebar multiple
. Ma credo che il mio metodo non sia il modo corretto per aggiungere più sidebar.
Ecco come aggiungo sidebar multiple
Se voglio semplicemente creare una sidebar, uso il file sidebar.php. MA se voglio usare un'altra sidebar, devo creare un altro file php come sidebar-new.php
. Poi lo richiamo con:
<?php
get_sidebar('new');
?>
Ciò significa che se voglio creare 4 sidebar, devo fare 4 file php!
MA ho visto molti temi (nel mercato WordPress) che offrono molte sidebar ma contengono solo un file php per la sidebar (sidebar.php)! Come fanno? Ho imparato a creare sidebar da Google in precedenza, ma nelle ricerche trovo solo i risultati che sto usando ora (creare file multipli per sidebar multiple).
Quindi, come posso creare sidebar multiple senza creare file php multipli!!???

Definire una nuova sidebar nel tuo file functions.php
<?php
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>'
));
}?>
Una volta definite queste funzioni, noterai che una nuova sidebar apparirà nella Dashboard di WordPress sotto la voce Aspetto > Widget. È qui che puoi trascinare e rilasciare tutti i tuoi widget nelle varie sidebar.
<?php
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name' => 'sidebar 1',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h2>',
'after_title' => '</h2>'
));
register_sidebar(array(
'name' => 'footer sidebar 1',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h2>',
'after_title' => '</h2>'
));
}?>
Aggiungere una nuova sidebar al tuo template
All'interno del tuo file sidebar.php, modifica la chiamata alla tua sidebar esistente per includere il nome che hai definito nel file functions.php in precedenza.
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar 1') ) : ?>
<h2>Articoli per mese</h2>
<ul>
<?php wp_get_archives('title_li=&type=monthly'); ?>
</ul>
<h2>Categorie</h2>
<ul>
<?php wp_list_categories('show_count=0&title_li='); ?>
</ul>
<?php endif; ?>
Per aggiungere la tua nuova sidebar, puoi sia copiare il codice sopra che semplicemente copiare le seguenti righe. Aggiungi queste righe dove vuoi che appaiano i tuoi nuovi widget. In questo esempio puoi vedere dal nome che sto posizionando la mia nel footer del mio sito. Come prima, non dimenticare di specificare il nome corretto della sidebar. Nel codice sopra, l'html che appare tra le istruzioni php è ciò che apparirà quando non ci sono widget aggiunti alla tua sidebar. Questo codice 'predefinito' può ovviamente essere modificato per adattarsi al tuo tema. Nel codice seguente, poiché non c'è html aggiuntivo, nulla verrà visualizzato a meno che un widget non sia stato aggiunto alla sidebar nella tua Dashboard di WordPress.
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('footer sidebar 1') ) : ?>
<?php endif; ?>

Ok, sono un po' confuso qui! Primo, perché non hai usato l'id per registrare la sidebar? E come posso chiamare la sidebar nella mia homepage? Così get_sidebar();
?

L'ID non viene utilizzato perché la sidebar viene chiamata attraverso l'area widget e puoi chiamarla nella homepage semplicemente usando il nome dell'area widget nella tua homepage.

Ma perché non riesco a vedere nessuna sidebar (che ho appena registrato) in Aspetto -> Widget?

Hai applicato il codice sopra? Ci sono diversi modi per aggiungere una sidebar nei file del tuo tema.

Il primo codice l'ho scritto in functions.php, il secondo codice l'ho digitato in functions.php (e poi anche in home.php) e l'ultimo codice l'ho inserito in sidebar.php. Cos'altro devo fare e dove?

Quel codice non ha alcun effetto nell'area di amministrazione! Hai testato questo metodo?

Un'altra cosa! Quando ho inserito l'ID nella funzione della sidebar registrata, ha iniziato a comparire in Aspetto -> Widget

Devi creare una sidebar e inserire il nome della sidebar nella funzione e poi chiamarla attraverso l'area widget. Sì, ho creato questo codice e l'ho utilizzato nel mio progetto.

registrare la sidebar nel widget e chiamarla attraverso l'area widget nella tua homepage è chiaro?

dovrei chiamarla come get_sidebar(); o in modo diverso? Se c'è un modo diverso di chiamarla, mostramelo

chiamandola così e controlla il risultato <div class="third"> <?php if ( ! dynamic_sidebar('nome della tua sidebar')) : ?> <h2>Nome della tua sidebar</h2> <?php endif; ?> </div>

No no no! sembra che tu stia capendo tutto male.. Stai suggerendomi di chiamare con questa funzione get_sidebar();
. Se sì, allora chiamerà entrambe le sidebar contemporaneamente. E se volessi mostrare un widget nel footer e un altro widget nell'header? Questo caso non sembra possibile con il tuo codice e questa era la mia domanda effettiva!

Puoi differenziare tra le sidebar all'interno di sidebar.php
. Non so quale sia il tuo scopo, ma supponiamo che tu voglia sidebar diverse per singoli articoli/pagine e altre pagine.
Nel tuo functions.php
registreresti due sidebar con ID singular
e default
nel modo consueto utilizzando register_sidebar
.
Poi in sidebar.php
includeresti qualcosa come:
if (is_singular()) {
dynamic_sidebar('singular');
} else {
dynamic_sidebar('default');
}
Ovviamente, ci sono molti modi per variare questo approccio. Puoi mostrare sidebar diverse in base alla categoria o forse nessuna sidebar su un template di pagina speciale chiamato 'one-column'.

Ho provato la tua soluzione e il risultato è esattamente quello che mi aspettavo. Mostra solo 1 sidebar! Quello che volevo sapere in realtà è un modo per aggiungere più sidebars in una pagina e posizionarle dove preferisco.

Intendi che vuoi fare più chiamate a get_sidebar
da index.php
per avere sidebars in posizioni diverse?

Sì, perché se voglio mostrare 2 sidebars diverse, una nel footer e l'altra in un'altra posizione come l'header, OPPURE entrambe le sidebars nel footer in una singola pagina, come potrei farlo?

Corretto. Questo significa che devi passare un'informazione da index.php
(il punto della chiamata) a sidebar.php
. È una questione complessa con diverse soluzioni. Puoi leggere di più qui: http://wordpress.stackexchange.com/questions/228223/check-if-partial-file-is-called-from-within-header-php-or-footer-php?lq=1

Puoi creare più sidebar utilizzando VC o l'editor di WordPress tramite https://codecanyon.net/item/custom-sidebar-visual-editor-wordpress-plugin/17329853
