Evaluare utilizator: 0 / 5

Steluță inactivăSteluță inactivăSteluță inactivăSteluță inactivăSteluță inactivă
 

Dacă realizaţi frecvent situri cu WordPress atunci se poate să vă ciocniţi cândva cu următoarea problemă: modificarea dinamică a meniului pe care îl afişează tema WordPress. Astăzi multe teme au chiar şi două meniuri, iar uneori poţi dori ca în funcţie de ceva (de pagină, de timp, de cine ştie ce criterii) să se modifice ceva în meniu. Se poate? Se poate! Eu vă dau exemplul meu concret iar Dvs generalizaţi sau adaptaţi pentru nevoile proprii. Într-un sit fac trimitere către pagini de calendar. Ceea ce nu îmi place este că în modul tradiţional trimiţi la prima lună şi basta. Fie iulie sau septembrie, meniul se va deschide cu ianuarie.

image

O să îmi spuneţi: modifică meniul în prima zi a fiecărei luni. Ei bine, nu îmi permit ca timp (a se citi: risc să uit) aşa că am dorit o soluţie permanentă. Mai ales că “arhitectura” era simplă. În loc să ducă la www.cinestiecesit.ro/calendar/ am nevoie să ducă la www.cinestiecesit.ro/calendar/5/ dacă este luna mai, sau alt număr după numărul lunii. Vă indic direct codul cu precizarea că trebuie să studiaţi exact situaţia din tema Dvs (de aceea poate veţi dori să faceţi un dump la date). Partea bună este că manipulările pot fi mai complexe. Puteţi adăuga dinamic o opţiune nouă în meniu. Să vedem un scenariu: un sit ce are din când în când oferte excepţionale. În back-end se poate pune în opţiuni un flag pentru “acum este oferă specială”, şi atunci să se scrie un cod care completează meniul cu anunţul “Ofertă specială!!!” doar când flagul acela este pe true. Şi câte alte exemple nu se pot gândi. Important este să ştim că meniurile WordPress sunt modificabile dinamic!

function modificaMeniu( $items, $args ) {
    //modifica meniu sa sara la luna curenta
    //var_dump($args);
    if($args->theme_location=='secondary-menu'){
        $items=str_replace('href="http://www.sfinticatolici.ro/calendar/">Calendar</a>','href="http://www.sfinticatolici.ro/calendar/'.date("m").'/">Calendar</a>',$items);
        $items=str_replace('href="http://www.sfinticatolici.ro/calendar/latin/">Calendar latin</a>','href="http://www.sfinticatolici.ro/calendar/latin/'.date("m").'/">Calendar latin</a>',$items);
        $items=str_replace('href="http://www.sfinticatolici.ro/calendar/bizantin/">Calendar bizantin</a>','href="http://www.sfinticatolici.ro/calendar/bizantin/'.date("m").'/">Calendar bizantin</a>',$items);
    }
    return $items;
}
add_filter('wp_nav_menu_items','modificaMeniu', 10, 2);

Read more http://feedproxy.google.com/~r/cnetro/~3/47jgc8XGuVM/