Kā parādīt WordPress sānjoslu ne WordPress tīmekļa vietnēs
Strādājot pie sava jaunākā projekta, DevGrow Diskusijas, man vajadzēja iegult manu visu WordPress sānjoslu uz vietas, kas nav WordPress - īpaši a bbPress forums. Tā kā es izmantoju dažādus logrīkus, lai parādītu populāras ziņas un citu dinamisku saturu, vienkārši nepietiek ar HTML kopēšanu un ielīmēšanu. Galu galā, patiešām ir tikai divi veidi, kā to darīt:
- Iekļaut savu wp-load.php failu savā pieteikumā un faktiski ielādējiet visu WordPress, lai piekļūtu spraudņa funkcijām
- Izmantojiet vienkāršu kešatmiņu, lai saglabātu sānjoslu HTML formātā un iekļautu to jebkurā citā lietojumprogrammā, pēc tam atjaunojiet to pēc vajadzības, kad tiek publicēts jauns saturs.
Ja tas nav pietiekami skaidrs, pirmā iespēja ir ļoti dārga datu bāzes vaicājumu ziņā un var ievērojami samazināt jūsu vietni. Otrā iespēja prasa nelielu piepūli īstenošanā, bet veiktspēja gudra nav konkurences.
Jūsu WordPress sānjoslas kešatmiņa
Pirms mēs varam rakstīt savu funkciju, mums ir jāsaprot, ko mēs cenšamies darīt. Mūsu mērķis ir kešatmiņu mūsu sānjoslai uz teksta failu un atjauniniet šo kešatmiņu ikreiz, kad publicējam ziņu, mainīt mūsu tēmu vai veikt izmaiņas sānjoslas logrīkos. Tā kā mēs plānojam izmantot mūsu kešatmiņu, lai parādītu sānjoslu citā lietojumprogrammā, mums ir jāspēj viegli izdzēst kešatmiņu bez jebkādām sliktām sekām (mēs nevēlamies, lai mūsu sānjosla tiktu pārtraukta jebkurā laikā).
Lai to paveiktu efektīvi, mēs arī izveidojiet mūsu kešatmiņā saglabāto failu žurnālu un izmantojiet, lai noteiktu, vai kešatmiņa ir jāizdzēš. Ja tā, tad reālā kešatmiņas fails tiks pārrakstīts nākamajā reizē, kad kāds apmeklēs WordPress vietni, nodrošinot, ka abās lietojumprogrammās vienmēr tiek nodrošināta pareiza sānjosla.
Funkciju izveide
Lai sāktu darbu, atveriet savu tēmu funkcijas.php failu un pievienojiet tai šādas funkcijas:
funkciju kešatmiņa ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Konfigurējiet failus un direktorijus: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Veikt kešatmiņas direktoriju, ja tā nav, ja (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Izveidojiet kešatmiņas failu žurnālu ar savu pašreizējo statusu, ja (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); cits $ cacheLog = masīvs (); ja ($ task == 'start') // Ja ir kešatmiņa, tā ir mazāka par 6 stundām, un tā nav dzēšanas rindā, paturiet to - citādi atjaunojiet kešatmiņu, ja (file_exists ($ cacheFileName) && (laiks () - filemtime ($ 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=>$ value) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, serialize ($ cacheLog));
Šīs pirmās funkcijas, kešatmiņa, ir atslēga, lai iegūtu mūsu kešatmiņu darbam. Atkarībā no tā, kur jūsu failā jūs to izsaucat, funkcija iestatīs pareizos failus un direktorijus, pārbaudīs, vai ir jāizveido kešatmiņa, un, ja jā, tas saglabās izlaidi un atjauninās kešatmiņas žurnālu. Funkcija izmanto PHP izejas buferizāciju, lai saglabātu jebkuru HTML failu teksta failā.
Otrā funkcija tiek izmantota, lai iztīrītu visus kešatmiņas failus un ir noderīga, lai pievienotu esošos WordPress āķus. Ar to mēs varam to darīt, lai mūsu kešatmiņa tiktu dzēsta katru reizi, kad mūsu tēma tiek atjaunināta, ziņa tiek saglabāta vai mūsu sānjoslas logrīki tiek atjaunināti, pievienojot šādus datus beigās funkcijas.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('public_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Lai iegūtu pilnu sarakstu ar āķiem, pārbaudiet WordPress spraudņa API atsauci.
Sānjoslas konfigurēšana
Tagad, kad funkcijas ir gatavas, varat sākt sānjoslas kešatmiņu. Atveriet savu sidebar.php un pievienojiet šo rindu faila sākumam:
Šī funkcija sāks saglabāt vajadzīgo sānjoslu, citādi tā neko nedarīs. Sakarā ar to, kā darbojas PHP izejas buferizācijas funkcija, mums arī jāaizver buferis faila beigās. Pievienojiet šo rindu tā paša faila apakšā:
Kad esat pievienojis šīs divas rindas, atsvaidziniet savu emuāru. Jūsu pārlūkprogrammā neko neredzēsiet, bet pārbaudiet / kešatmiņa direktoriju savā tematiskajā mapē un jums vajadzētu redzēt divus failus, sākot ar kešatmiņa-.
Kešatmiņas izmantošana
Tagad, kad esat izveidojis kešatmiņas failu, varat to izmantot jebkurā lietojumprogrammā, kurai ir piekļuve tai. To var viegli izdarīt, izmantojot include_once funkcija, bet es arī gribētu pārliecināties, ka fails ir pieejams, lai būtu drošs:
Vienkārši pārbaudiet, vai faila ceļš ir pareizs. Ja vēlaties iestatīt kešatmiņu no ārējās lietojumprogrammas, jums būs jāiekļauj cache_purge darbojas kaut kur un vienkārši zvaniet, kad tas ir nepieciešams. Pēc tam tas vienkārši ir jautājums par funkcijas izsaukšanu:
Secinājums
Šī metode patiešām ir noderīga jebkurai PHP lietojumprogrammai, īpaši, ja vēlaties parādīt dinamisku saturu, nezaudējot veiktspēju. Izmantojiet to, lai paātrinātu WordPress instalēšanu vai varētu izmantot noderīgus bitus (piemēram, sānjoslu) jebkurā citā tīmekļa vietnē vai lietojumprogrammā.
Redaktora piezīme: Šo ziņu raksta Monjurul Dolon par Hongkiat.com. Monjurul ir NYC balstīta interfeisa dizainers un tīmekļa izstrādātājs, kas brīvi strādā savā dzīvē. Viņš emuārus DevGrow.com, kur viņš dalās ar padomiem un resursiem par web izstrādi un dizainu.