Pagina principala » WordPress » Cum se afișează bara laterală WordPress pe site-urile non-WordPress

    Cum se afișează bara laterală WordPress pe site-urile non-WordPress

    În timp ce lucram la ultimul meu proiect, DisGrow Discussions, am dat peste necesitatea de a încorporați întreaga mea bara laterală WordPress pe un site non-WordPress - în special a bbPress forum. Deoarece folosesc diverse widget-uri pentru a afișa mesaje populare și alte conținuturi dinamice, copierea și inserarea codului HTML nu ar fi suficiente. În cele din urmă, există într-adevăr două modalități de a face acest lucru:

    1. Includeți-vă wp-load.php fișier în aplicația dvs. și, în realitate, încărcați întreaga WordPress pentru a avea acces la funcțiile pluginului
    2. Utilizați caching-ul simplu pentru a stoca bara laterală în format HTML și includeți-l în orice altă aplicație, apoi reconstruiți-o după cum este necesar atunci când este publicat un nou conținut

    Dacă nu este destul de evidentă, prima opțiune este foarte costisitoare în ceea ce privește interogările bazei de date și poate încetini în mod semnificativ site-ul dvs. în jos. A doua opțiune necesită puțin efort în implementare, dar performanța nu este competitivă.

    Caching-ul dvs. WordPress Sidebar

    Înainte de a ne putea scrie funcția, trebuie să înțelegem exact ceea ce încercăm să facem. Scopul nostru este să cache-ul nostru bara laterală într-un fișier text și actualizați memoria cache ori de câte ori publicăm o postare, modificați tema sau modificați widgeturile barei laterale. Deoarece intenționăm să folosim memoria cache pentru a afișa bara laterală într-o altă aplicație, trebuie să putem șterge cu ușurință cache-ul fără efecte nefaste (nu vrem ca bara noastră laterală să fie ruptă în orice moment).

    Pentru a realiza acest lucru eficient, vom, de asemenea creați un jurnal al fișierelor noastre stocate în memoria cache și utilizați-l pentru a determina dacă ar trebui să fie șterse memoria cache. Dacă da, fișierul cache real va fi suprascris data viitoare când cineva vizitează site-ul WordPress, asigurându-se că o bară laterală corectă este întotdeauna redată în ambele aplicații.

    Crearea funcțiilor

    Pentru a începe, deschideți tema functions.php fișier și adăugați următoarele funcții:

     cache de funcții ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Configurați fișierele și directoarele: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Creați directorul cache dacă acesta nu există dacă (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Creați un jurnal al fișierelor cache cu starea lor curentă dacă (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); altfel $ cacheLog = array (); dacă ($ task == 'start') // Dacă memoria cache există, este mai mică de 6 ore și nu este în coada de ștergere, păstrați-o - altfel reconstrui cache-ul dacă (file_exists ($ cacheFileName) && (time ($ cacheFileName)) < $cacheTime && $cacheLog[$cacheFile] == 1) $cache = false;  else  $cache = true; ob_start();  elseif($task == 'end' && $cache) // If caching, save file contents and update log file_put_contents($cacheFileName,ob_get_contents()); ob_end_flush(); $cacheLog[$cacheFile] = 1; file_put_contents($cacheLogFile,serialize($cacheLog)); elseif($task == 'purge') // Set cache to delete and update log $cacheLog[$cacheFile] = 0; file_put_contents($cacheLogFile,serialize($cacheLog));   function cache_purge() $cacheDir = TEMPLATEPATH."/cache"; $cacheLogFile = $cacheDir."/cache-log.txt"; if(file_exists($cacheLogFile)) $cacheLog = unserialize(file_get_contents($cacheLogFile)); else $cacheLog = array(); foreach($cacheLog as $key=>$ valoare) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, serialize ($ cacheLog));  

    Această primă funcție, ascunzătoare, este cheia pentru funcționarea cache-ului nostru. În funcție de locația din fișierul pe care o apelați, funcția va configura fișierele și directoarele corecte, va verifica dacă o memorie cache trebuie construită și, dacă da, va salva ieșirea și va actualiza jurnalul de arhivă. Funcția utilizează tamponarea de ieșire a PHP pentru a salva orice HTML generat într-un fișier text.

    A doua funcție este folosită pentru a curăța toate fișierele de memorie cache și este utilă pentru adăugarea la cârligele WordPress existente. Cu aceasta putem face ca cache-ul nostru să fie șters de fiecare dată când tema noastră este actualizată, o postare este salvată sau widgeturile barei laterale sunt actualizate prin adăugarea următoarelor la sfârșitul functions.php:

     add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10); 

    Pentru o listă completă cu cârlige, consultați Referința API pentru WordPress Plugin.

    Configurarea bara laterală

    Acum că aveți funcțiile pregătite, puteți începe să salvați bara laterală. Deschide-ți sidebar.php și adăugați această linie la începutul fișierului:

      

    Această funcție va începe să cacheze bara laterală de care are nevoie, altfel nu va face nimic. Din cauza modului în care funcționează funcția de tampon de ieșire PHP, trebuie de asemenea să închidem buffer-ul la sfârșitul fișierului. Adăugați această linie în partea de jos a aceluiași fișier:

      

    După ce ați adăugat cele două linii, reîmprospătați-vă blogul. Nu veți vedea nimic în browserul dvs., dar verificați / cache director în dosarul tematic și ar trebui să vedeți două fișiere care încep cu ascunzătoare-.

    Utilizarea memoriei cache

    Acum, că ați creat fișierul cache, îl puteți utiliza în orice aplicație care are acces la acesta. Puteți face acest lucru cu ușurință utilizând include_once dar îmi place să fiu sigur că fișierul există, doar pentru a fi sigur:

      

    Doar asigurați-vă că verificați dublu calea fișierului dvs. este corectă. Dacă doriți să setați cache-ul pentru a șterge dintr-o aplicație externă, va trebui să includeți cache_purge funcția în scenariul dvs. undeva și pur și simplu apelați ori de câte ori este necesar. După aceea este pur și simplu o chestiune de a apela funcția:

      

    Concluzie

    Această tehnică este foarte utilă pentru orice aplicație PHP, mai ales atunci când doriți să afișați conținut dinamic fără a fi nevoie să sacrificați performanța. Utilizați-l pentru a accelera instalarea WordPress sau pentru a putea folosi biți utili (cum ar fi bara laterală) pe orice alt site sau aplicație.

    Nota editorului: Această postare este scrisă de Monjurul Dolon pentru Hongkiat.com. Monjurul este un designer de interfețe bazat pe NYC și un dezvoltator de pagini web, care își face drum liber viața. El face bloguri la DevGrow.com, unde împărtășește sfaturi și resurse despre dezvoltarea și proiectarea web-ului.