Custom sidebar pentru un anumit articol sau pagină

Un client de-al meu avea la un moment dat nevoie de un meniu special pentru fiecare articol pe care-l făcusem pentru site-ul său de prezentare (asta pentru că a vrut ca site-ul de prezentare să funcţioneze pe platforma WordPress), iar eu, ca să fac asta, aveam nevoie de un sidebar diferit pentru fiecare post în parte.

Trebuia să fac în aşa fel încât să pot adăuga şi edita meniurile pentru fiecare articol fără să întru în cod de fiecare dată, pentru că dacă mai apărea câte-un link ce trebuia introdus în meniu, să şi-l poată introduce şi singur, fără cine ştie ce cunoştinţe de HTML şi CSS.

În rândurile ce vor urma, voi încerca să vă explic pe scurt despre ce-i vorba.

În primul rând, trebuie să-i spunem WordPress-ului că nu vrem să afişăm acelaşi sidebar pe fiecare pagină pe care-o afişează. Pentru a arăta un sidebar diferit în pagina unui articol, spre exemplu, va trebui să modificăm single.php.

Deschide single.php şi găseşte următoarea linie de cod (de obicei este spre sfârşitul documentului, penultimul rând):

<?php get_sidebar(); ?>

Acum înlocuieşte acea linie de cod cu următoarea:

<?php $sidebar = get_post_meta($post->ID, „sidebar”, true);
get_sidebar($sidebar);
?>

Acum va trebui să ne folosim de Custom Fields de fiecare dată când introducem un articol pentru care dorim un sidebar diferit. În josul paginii, chiar în momentul în care scrii articolul, vei observa un tab care se numeşte „Custom Fields”.
Custom sidebar pentru fiecare articol

Câmpul „Name” va fi întoteauna completat cu „sidebar”, pentru că aşa l-am declarat noi în single.php, undeva mai sus. Câmpul value va da numele sidebar-ului. În exemplul dat de mine mai sus, articolul pe care-l scriu, în loc să afişeze fişierul sidebar.php din template, va căuta sidebar-floreacristian.php.

Pentru că sidebar-floreacristian.php nu există, va trebui să-l fac singur. Am copiat sidebar.php, l-am redenumit, iar acum m-am pus pe modificat. Tot ce modific în sidebar-floreacristian.php, va apărea numai în articolele în care setez Custom Fields ca în imaginea de mai sus.

Ce-am făcut eu pentru clientul meu? Am făcut un astfel de sidebar pentru fiecare articol în parte (au fost doar 10 articole), am creat 10 sidebar-uri noi în functions.php, apoi am adăugat câte-un widget în fiecare dintre ele, aşa cum am explicat aici. Omul poate acum să modifice meniurile direct din Appearance » Menus, sau întregul sidebar din Appearance » Widgets.

Pentru ca sidebar-ul să fie diferit pentru pagini, nu pentru articole, va trebui să facem modificări în page.php, nu în single.php.

14 Comments

  1. Bogdan 30 aprilie 2011
    • Cristian Florea 30 aprilie 2011
  2. ramicori 30 aprilie 2011
    • Cristian Florea 30 aprilie 2011
  3. Myky 1 mai 2011
    • Cristian Florea 1 mai 2011
      • Myky 2 mai 2011
  4. Zoly 2 mai 2011
    • Cristian Florea 2 mai 2011
  5. articole copii 2 mai 2011
    • Cristian Florea 2 mai 2011
  6. ceasuri mana 2 mai 2011
  7. ady 15 martie 2012
    • Cristian Florea 15 martie 2012

Leave a Reply