Cea mai bună metodă de a crea mai multe bare laterale în WordPress

1 iul. 2016, 09:17:10
Vizualizări: 19.1K
Voturi: 6

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!!???

1
Comentarii

Aș analiza crearea unei clase OOP pentru bara laterală și apoi aș apela clasa în loc să folosesc get_sidebar. În acest fel, poți transmite diferite valori clasei după cum este necesar. Nu prea văd altă soluție fără să devină foarte dezordonat

Pieter Goosen Pieter Goosen
1 iul. 2016 10:15:19
Toate răspunsurile la întrebare 3
13

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; ?>
1 iul. 2016 11:43:55
Comentarii

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();!

Rishabh Rishabh
1 iul. 2016 12:59:10

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ă.

Owais Alam Owais Alam
1 iul. 2016 13:02:00

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

Rishabh Rishabh
1 iul. 2016 13:07:05

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

Owais Alam Owais Alam
1 iul. 2016 13:10:15

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?

Rishabh Rishabh
1 iul. 2016 13:16:54

deci ce răspuns primești în zona de administrare?

Owais Alam Owais Alam
1 iul. 2016 13:19:09

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

Rishabh Rishabh
1 iul. 2016 13:21:14

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

Rishabh Rishabh
1 iul. 2016 13:23:00

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.

Owais Alam Owais Alam
1 iul. 2016 13:41:11

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

Owais Alam Owais Alam
1 iul. 2016 13:42:44

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

Rishabh Rishabh
1 iul. 2016 13:45:49

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>

Owais Alam Owais Alam
1 iul. 2016 13:50:01

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ă!

Rishabh Rishabh
1 iul. 2016 13:56:20
Arată celelalte 8 comentarii
4

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'.

1 iul. 2016 10:35:14
Comentarii

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.

Rishabh Rishabh
1 iul. 2016 11:01:40

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

cjbj cjbj
1 iul. 2016 11:06:00

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?

Rishabh Rishabh
1 iul. 2016 11:09:09

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

cjbj cjbj
1 iul. 2016 11:18:42
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

31 aug. 2017 21:38:21
Comentarii

Mulțumesc pentru sugestie, dar am vrut să o fac singur. Adică fără ajutorul unui plugin. Dar răspunsul tău ar putea fi util pentru viitorii vizitatori :)

Rishabh Rishabh
1 sept. 2017 08:53:50