Cea mai bună metodă de a crea mai multe bare laterale în WordPress
Sunt perfect conștient de cum să creez mai multe bare laterale
. Dar cred că metoda mea nu este cea mai corectă pentru a adăuga bare laterale multiple.
Așa adaug eu mai multe bare laterale
Dacă vreau să creez o simplă bară laterală, folosesc fișierul sidebar.php. DAR dacă vreau să folosesc o altă bară laterală, atunci trebuie să creez un alt fișier php precum sidebar-new.php
. Apoi apelez acest fișier astfel:
<?php
get_sidebar('new');
?>
Asta înseamnă că dacă vreau să creez 4 bare laterale, trebuie să fac 4 fișiere php!
DAR am văzut multe teme (pe piața WordPress) care oferă mai multe bare laterale dar conțin doar un singur fișier php pentru bară laterală (sidebar.php)! Cum reușesc asta? Am învățat despre crearea barelor laterale de pe Google, dar în căutări găsesc doar rezultatele pe care le folosesc acum (crearea de fișiere multiple pentru bare laterale multiple).
Deci cum pot crea mai multe bare laterale fără a face fișiere PHP multiple!!???

Definirea unei noi bare laterale în fișierul 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>'
));
}?>
După ce aceste funcții sunt definite, veți observa bara laterală suplimentară în Panoul de control WordPress sub opțiunea Aspect > Widgeturi. Aici puteți trage și plasa toate widgeturile în diferitele bare laterale.
<?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>'
));
}?>
Adăugarea unei noi bare laterale în șablon
În fișierul sidebar.php, modificați apelul către bara laterală existentă pentru a include numele pe care l-ați definit anterior în fișierul functions.php.
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar 1') ) : ?>
<h2>Articole pe luni</h2>
<ul>
<?php wp_get_archives('title_li=&type=monthly'); ?>
</ul>
<h2>Categorii</h2>
<ul>
<?php wp_list_categories('show_count=0&title_li='); ?>
</ul>
<?php endif; ?>
Pentru a adăuga noua bară laterală, puteți fie să copiați codul de mai sus, fie puteți copia următoarele linii. Adăugați aceste linii în locul unde doriți să apară noile widgeturi. În acest exemplu, puteți vedea din nume că o plasez în subsolul site-ului meu. Ca și înainte, nu uitați să specificați numele corect al barei laterale. În codul de mai sus, HTML-ul care apare între instrucțiunile PHP este ceea ce va apărea atunci când nu sunt adăugate widgeturi la bara laterală. Acest cod 'implicit' poate fi modificat pentru a se potrivi temei. În următorul cod, deoarece nu există HTML suplimentar, nu se va afișa nimic decât dacă a fost adăugat un widget în bara laterală din Panoul de control WordPress.
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('footer sidebar 1') ) : ?>
<?php endif; ?>

ok, sunt puțin confuz aici! În primul rând, de ce nu ai folosit id în înregistrarea sidebar-ului? Și cum pot apela sidebar-ul pe pagina mea principală? așa: get_sidebar();
!

ID nu este folosit pentru că apelăm sidebar-ul prin zona de widget-uri și îl poți apela pe pagina principală prin simpla menționare a numelui zonei de widget-uri pe pagina ta principală.

Dar de ce nu văd niciun sidebar (care tocmai a fost înregistrat) în aspect -> widget?

Ai aplicat codul de mai sus? Există mai multe modalități de a adăuga o bară laterală în fișierul temei tale.

Primul cod l-am scris în functions.php, al doilea cod l-am introdus în functions.php (și mai târziu și în home.php), iar ultimul cod l-am introdus în sidebar.php. Ce altceva trebuie să fac și unde?

Acel cod nu are niciun efect în zona de administrare! Ai testat această metodă?

Încă un lucru! Când am pus ID în funcția de sidebar înregistrată, acesta a început să apară în Aspect -> Widgeturi

trebuie să creezi un sidebar și să pui numele sidebar-ului în funcție, apoi să-l apelezi prin zona de widget-uri. Da, am creat acest cod și l-am folosit în proiectul meu.

înregistrează o bară laterală în widget și apelează-o prin zona de widget pe pagina ta principală este clar?

ar trebui să o apelez folosind get_sidebar(); sau într-un mod diferit? Dacă există alt mod de a o apela, atunci arată-mi

apelează astfel și verifică rezultatul <div class="third"> <?php if ( ! dynamic_sidebar('numele barei tale laterale')) : ?> <h2>Numele barei tale laterale</h2> <?php endif; ?> </div>

Nu nu nu! Se pare că înțelegi totul greșit.. Îmi sugerezi să apelez cu această funcție get_sidebar();
. Dacă da, atunci va apela ambele bare laterale în același timp. Ce se întâmplă dacă aș vrea să afișez un widget în subsol și alt widget în antet. Acest caz nu pare posibil cu codul tău și aceasta era întrebarea mea reală!

Puteți diferenția între barele laterale în interiorul sidebar.php
. Nu știu care este scopul dvs., dar să presupunem că doriți bare laterale diferite pe postări/pagini individuale și pe alte pagini.
În functions.php
ați înregistra două bare laterale cu ID-urile singular
și default
în modul obișnuit cu register_sidebar
.
Apoi, în sidebar.php
, ați include ceva de genul:
if (is_singular) {dynamic_sidebar('singular');}
else {dynamic_sidebar('default');}
Desigur, există multe modalități de a varia acest lucru. Puteți afișa bare laterale diferite în funcție de categorie sau poate deloc o bară laterală pe un șablon special de pagină numit 'one-column'.

Am încercat soluția ta și rezultatul a fost conform așteptărilor mele. Afișează doar o singură bară laterală! Ceea ce voiam de fapt să aflu este o modalitate de a adăuga mai multe bare laterale pe o singură pagină și în acea pagină în locația pe care o aleg eu.

Vrei să spui că dorești mai multe apeluri către get_sidebar
din index.php
pentru a avea bare laterale în locuri diferite?

Da, pentru că dacă vreau să afișez 2 bare laterale diferite, una în subsol și alta în orice altă locație, de exemplu în antet SAU ambele bare laterale în subsol pe o singură pagină, atunci cum aș putea face asta?

Corect. Asta înseamnă că trebuie să transmiți o informație de la index.php
(locul apelului) către sidebar.php
. Aceasta este o problemă complicată cu mai multe soluții. Poți citi mai multe despre ea aici: http://wordpress.stackexchange.com/questions/228223/check-if-partial-file-is-called-from-within-header-php-or-footer-php?lq=1

Puteți crea multiple bare laterale folosind Visual Composer sau editorul WordPress prin intermediul https://codecanyon.net/item/custom-sidebar-visual-editor-wordpress-plugin/17329853
