WordPress-də fərdi arxiv səhifəsi yaradın. PHP-də ZIP arxivi yaradın Səlahiyyətli detallar arxivi php
Sayt mənbələrini serverdən tez yükləmək lazım olduqda, hətta nisbətən sürətli SSH tuneli də lazımi sürəti təmin etmir. Və çox, çox uzun müddət gözləmək lazımdır. Və bir çox hosting provayderləri bu girişi təmin etmir, lakin onları dəfələrlə yavaş olan FTP ilə kifayətlənməyə məcbur edir.
Mən özüm üçün çıxış yolunu müəyyən etdim. Kiçik bir skript serverə yüklənir və işə salınır. Bir müddətdən sonra bütün mənbələrin olduğu bir arxiv alırıq. Və bir fayl, hətta qədim FTP vasitəsilə, yüz kiçik fayldan daha sürətli yüklənir.
Əvvəllər bu bloqun səhifələrində zipArchive. Ancaq sonra arxivin açılması haqqında idi.
Əvvəlcə serverin zipArchive dəstəyinin olub olmadığını öyrənməliyik. Bu məşhur kitabxana hosting saytlarının böyük əksəriyyətində quraşdırılıb.
Kitabxana sərt kodlaşdırılmışdır php parametrləri və server. Siz nəhəng verilənlər bazası və fotoşəkil banklarını arxiv edə bilməyəcəksiniz. Mühasibat uçotu üçün köhnə yaxşı 1C proqramının əsasları belə. Belə görünür ki, onlar yalnız mətn məlumatlarını ehtiva etməlidirlər. Amma yox.
Kitabxanadan yalnız çox sayda kiçik faylı olan nisbətən kiçik saytları arxivləşdirərkən istifadə etməyi məsləhət görürəm.
Kitabxana ilə işləməyin mümkün olub olmadığını yoxlayın
Əgər (! Extension_loaded ("zip")) (false qaytarın;)
Hər şey qaydasındadırsa, skript icrasını daha da davam etdirəcək.
Belə yoxlamalar üçün kiçik bir oftopik. Yoxlamalar böyük mötərizələrdən qaçaraq bu şəkildə aparılmalıdır. Bu, kodu daha atomik edəcək və sazlanmağı asanlaşdıracaq. Müqayisə et
Əgər (a == b) (əgər (c == d) (əgər (e == f)) (əgər "Bütün şərtlər işləmişdir";) əks-sədası "e"<>f ";) başqa əks-səda" c<>d ";) başqa əks-səda" a<>b;
və buna bənzər bir kod
Əgər (a! = B) çıxın ("a<>b); əgər (c! = d) çıxın ("c<>d); əgər (e! = f) çıxın ("e<>f); echo "Bütün şərtlər yerinə yetirildi";
Kod daha gözəldir və nəhəng daxili konstruksiyalara çevrilmir.
Offtopik üçün üzr istəyirəm, amma bu tapıntını paylaşmaq istədim.
İndi obyekt və arxiv yaradaq.
$ zip = yeni ZipArxiv (); əgər (! $ zip-> açıq ($ təyinat yeri, ZIPARCHIVE :: CREATE)) (yanlış qaytarın;)
burada $ təyinatı arxivə gedən tam yoldur. Arxiv artıq yaradılıbsa, fayllar ona əlavə olunacaq.
$ zip-> addEmptyDir (str_replace ($ mənbə. "/", "", $ fayl. "/"));
burada $ mənbə kateqoriyamızın tam yoludur (bizim bunu ilkin olaraq arxivləşdirdik), $ faylı cari qovluğun tam yoludur. Bu, arxivdə tam yolların olmaması, yalnız nisbi yollar olması üçün edilir.
Fayl əlavə etmək oxşar şəkildə işləyir, lakin əvvəlcə onu sətirdə oxumaq lazımdır.
$ zip-> addFromString (str_replace ($ mənbə. "/", "", $ fayl), file_get_contents ($ fayl));
Sonda arxivi bağlamaq lazımdır.
$ zip-> bağla ();
Bir qovluqdakı bütün faylları və alt qovluqları necə keçmək olar, məncə izah etməyə ehtiyac yoxdur. Google kimi bir şey php-də rekursiv qovluq keçidi
Bu seçim mənə uyğun gəldi
Funksiya Zip ($ mənbə, $ təyinat) (əgər (! Extension_loaded ("zip")) ||! Fayl_mövcuddursa ($ mənbə)) (yanlış qaytarın;) $ zip = yeni ZipArxiv (); əgər (! $ Zip-> açıq (! $ Zip->) $ təyinat, ZIPARCHIVE :: CREATE)) (yanlış qaytarın;) $ mənbə = str_replace ("\\", "/", real yol ($ mənbə)); əgər (is_dir ($ mənbə) === doğru) ($ faylları = yeni RecursiveIteratorIterator (yeni RecursiveDirectoryIterator ($ mənbə), RecursiveIteratorIterator :: SELF_FIRST); foreach ($ faylı olaraq $ faylları) ($ faylı = str_replace ("\\", "/", $ faylı); // İqnor "." və ".." qovluqları əgər (in_array (substr ($ fayl, strrpos ($ fayl, "/") + 1), massiv (".", "..") davam edirsə; $ fayl = real yol ($ fayl) ); $ fayl = str_replace ("\\", "/", $ fayl); əgər (is_dir ($ fayl) === doğru) ($ zip-> addEmptyDir (str_replace ($ mənbə. "/", "" , $ fayl. "/"));) başqa if (is_fayl ($ fayl) === doğru) ($ zip-> addFromString (str_replace ($ mənbə. "/", "", $ fayl), file_get_contents ($ fayl));))) başqa əgər (is_fayl ($ mənbə) === doğru) ($ zip-> addFromString (əsas ad ($ mənbə), fayl_get_contents ($ mənbə));) $ zip-> bağlamaq (); )
Dünən forumda mənə sual verdilər PHP-də ZIP arxivlərinin yaradılması... Bir az düşündüm və başa düşdüm ki, bu mövzu çox sayda insanı maraqlandıracaq, çünki PHP-də ZIP arxivləşdirməçox məşhur mövzu. Və bu yazıda bir nümunə göstərəcəyəm, ZIP arxivinin PHP skripti vasitəsilə necə yaradıldığı.
Dərhal sizə bir misal verim zip arxivi yaradın, və sonra hərtərəfli şərh edəcəyəm:
$ zip = yeni ZipArxiv (); // ZIP arxivləri ilə işləmək üçün obyekt yaradın
$ zip-> açıq ("arxiv.zip", ZIPARCHIVE :: YARAT); // Arxiv arxivini açın (yaratın).zip
$ zip-> addFile ("index.php"); // index.php faylını arxivə əlavə edin
$ zip-> addFile ("üslublar / style.css"); // styles / style.css faylını arxivə əlavə edin
$ zip-> bağla (); // Arxivlə işi bitirin
?>
Bu skriptin icrası nəticəsində, ZIP arxivi, fayl kökdə olacaq index.php və kataloq da yaradılacaq üslublar faylın harada yerləşəcəyi style.css... Düşünürəm ki, bütün bunlar açıq və məntiqlidir. İndi sizinlə etdiklərimizi şərh edirəm:
- Obyekt yaratdı ZipArxiv konstruktordan istifadə etməklə.
- Metoddan istifadə edərək arxiv yaratdı açıq () obyekt ZipArxiv... Arxivin adını keçdik ( arxiv.zip) və daimi ZIPARXIVE :: YARATIN, arxivin mövcud olmadığını bildirir, o zaman yaradılmalıdır.
- Metod fayl əlavə et () faylları arxivə əlavə edir. Əvvəlcə faylı əlavə etdik " index.php", skriptlə eyni qovluqda yerləşir. Sonra faylı əlavə etdik style.css, həm də ona işarə edir doğru yol ssenariyə nisbətən.
- Metod yaxın () arxivlə işi bitir. Həmişə kompüter resurslarını boşaltmaq və ən çox qarşısını almaq üçün bunu edin müxtəlif problemlər bu skriptin və bu arxivə giriş tələb edən digər skriptlərin işləməsi ilə əlaqədardır.
Belə sadə bir şəkildə edə bilərsiniz yaratmaq avtomatik rejim ZIP arxivləri ilə PHP istifadə edərək ... Növbəti məqalədə sizinlə təhlil edəcəyik, PHP vasitəsilə ZIP arxivini necə çıxarmaq olar.
2008-ci ildə internet saytında dərc etdiyimiz ən mühüm xəbərlər bunlardır.
Yeniləmə (6 dekabr): Eksik zip təhlükəsizlik düzəlişi əlavə edildi
Son alfadan bəri çoxlu sayda başqa əlavələr və təkmilləşdirmələr olub, lakin burada ən mühüm dəyişikliklərin qısa icmalı var:
- (sənədlər hazırkı vəziyyətə qədər yeniləndi)
- ext / msql silindi, ext / ereg isə indi E_DEPRECATED bildirişlərini qaldıracaq
- ext / mhash ext / hash ilə əvəz olundu, lakin tam BC saxlanılır
- PHP indi standart kompilyator kimi gcc əvəzinə cc-dən istifadə edir
- Digərləri arasında ext / pdo, ext / sabun, axın qatında bir sıra səhvlər düzəldildi
Başlıq altındakı bir neçə dəyişiklik, həmçinin hər hansı geriyə uyğunluq pozulmalarının minimuma endirilməsini təmin etmək üçün mövcud tətbiqlərlə dərin sınaq tələb edir.
Tərtibatçıları, dizaynerləri, menecerləri və ya PHP proqramlaşdırma dili ilə maraqlanan hər kəsi çox münasib qiymətə möhtəşəm bir hadisə vəd edən bizə qoşulmaq istərdik:
- Standart biletlər: £ 60.00
- Erkən quş (8 noyabra qədər): £ 50.00
- Güzəştli biletlər: £ 35.00
* Şirkətinizin məktubu ilə təsdiq
** Tələbə ID ilə. Məhdud oturacaqlar mövcuddur
Bu alfa buraxılışının məqsədi istifadəçiləri yalnız səhvlərin müəyyən edilməsində fəal iştirak etməyə deyil, həm də sənədlərdə bütün yeni funksiyaların və ya lazımi geriyə uyğun uyğunluq fasilələrinin qeyd olunmasını təmin etməkdir. Zəhmət olmasa, hər hansı bir tapıntı barədə və ya.
Çox sayda başqa əlavələr və təkmilləşdirmələr var, lakin burada ən vacib dəyişikliklərin qısa icmalı var:
- (sənədlər köhnə ola bilər)
- Əlavə, (phar bir az daha iş alpha2 rəhbəri planlaşdırılır) və uzantıları
- Könüllü olaraq dövri zibil yığılması
- libmysql üçün MySQLnd dəyişdirmə sürücüsü üçün əlavə dəstək
- Windows 2000-dən köhnə Windows (Windows 98, NT4 və s.) artıq dəstəklənmir ()
- Məhdud GOTO, üçlü qısa yol kimi yeni sintaksis xüsusiyyətləri "?:"
Başlıq altındakı bir neçə dəyişiklik, həmçinin hər hansı geriyə uyğunluq pozulmalarının minimuma endirilməsini təmin etmək üçün mövcud tətbiqlərlə dərin sınaq tələb edir. Bu, sənədsiz Zend mühərriki multibayt dəstəyi tələb edən istifadəçilər üçün xüsusilə vacibdir.
Ən yaxşı təqdimatçımız Feliks De Vliger son təqdimatlarını əslində özü etdi, çünki təqdimatlarının yüksək keyfiyyətinə əsaslanaraq ona PHP repozitoriyasına öhdəlik hüququ verilmişdir. Biz bütün iştirakçılardan cavab eşitməmişik, lakin biz hər kəsi öz təcrübələri haqqında blog yazmağa və gələcək hadisələri necə yaxşılaşdıracağımız barədə bizə rəy bildirməyə dəvət edirik.
İndi heç vaxtdan gec daha yaxşıdır, burada Nexen tərəfindən maliyyələşdirilən vəd edilmiş elePHPant lotereyasının 10 qalibi var. Qeyd edək ki, Feliks məndən onu lotereyaya qatmamağımı xahiş etdi, çünki o, artıq evdə kifayət qədər sayda fil sürür.
- Erik Stüart
- Havard Eide
- Mark Veldman
- Mikelancelo van bəndi
- Rein Velt
- Rob gənc
- Sami Greenbury
- Sebastian Deutsch
- Sebastian Schürmann
- Stefan Koopmanschap
Biz Nexen-ə qaliblərin e-poçt ünvanlarını təqdim edəcəyik ki, onlar elePHPants-ın göndərilməsini təşkil etsinlər. Həm də maraqlanan insanlar üçün testləri təqdim etməyə davam edə bilərsiniz. Bütün iştirakçılara və TestFest təşkilatçılarına bir az təşəkkür edirik! Yerli tədbirlərin təşkilinə, infrastrukturun həyata keçirilməsinə və təqdimatların nəzərdən keçirilməsinə kömək edən saysız-hesabsız insanlar olmasaydı, TestFest açıq şəkildə olduğu kimi işləməyəcəkdi. TestFest 2008-in böyük uğuru əsasında biz şübhəsiz ki, gələcəkdə də oxşar tədbirlər keçirəcəyik.
PHP 5.2.6-da Təhlükəsizlik Təkmilləşdirmələri və Düzəlişləri:
- Andrey Niqmatulin tərəfindən müəyyən edilmiş FastCGI SAPI-də mümkün yığın buferinin daşması düzəldildi.
- Maksymilian Aciemowicz tərəfindən müəyyən edilmiş printf ()-də sabit tam daşqın.
- Rayan Permeh tərəfindən müəyyən edilmiş CVE-2008-0599-da təfərrüatları verilmiş sabit təhlükəsizlik problemi.
- Maksymilian Arciemowicz tərəfindən müəyyən edilmiş cURL-də təhlükəsiz_rejim keçidi düzəldildi.
- Stefan Esser tərəfindən müəyyən edilmiş escapeshellcmd () daxilində natamam çoxbayt simvolları düzgün ünvanlayın.
- Paketlənmiş PCRE 7.6 versiyasına təkmilləşdirildi
İnternet Arxivi artıq təklif edir 15,000,000 pulsuz yüklənə bilən kitablar və mətnlər. Pulsuz sayt hesabı olan hər kəs tərəfindən borc götürülə bilən kolleksiya da var.
Alternativ olaraq, bizim portativ Stolüstü Skanerimiz də alına və kitabxanalar və arxivlərdə yerində istifadə oluna bilər. TT Scribe haqqında daha çox oxumaq üçün ziyarət edin.
2005-ci ildən bəri İnternet Arxivi artıq onlarla əməkdaşlıq edir və rəqəmsal kolleksiyalar yaradır 1100 Kitabxana Müəssisələri və digər məzmun təminatçıları. Tərəfdaşlıqlara aşağıdakılar daxildir:, the və. Bu kolleksiyalar müxtəlif mediatiplərdən rəqəmsallaşdırılıb, o cümlədən: və geniş çeşiddə. Əhəmiyyətli töhfələr Şimali Amerikadakı (və Kitabxanalar) və 184-dən çox dili təmsil edən tərəfdaşlardan gəldi.
İnternet Arxivi qlobal ictimaiyyətimizi fiziki əşyalara töhfə verməyə, eləcə də rəqəmsal materialları birbaşa İnternet Arxivinə yükləməyə təşviq edir. İnternet Arxivinə əlavə etmək istədiyiniz rəqəmsal elementləriniz varsa, lütfən, yükləyici interfeysindən istifadə edərək yeni element daxil edin. Materialın necə istifadə oluna biləcəyini bildirmək üçün xüsusi Creative Commons lisenziyasını tətbiq etmək üçün bura klikləyin.
Fiziki kitab və ya əşyaların bağışlanması üçün əlaqə saxlayın [email protected] Sayt
Oxumaq, yükləmək, çap etmək və həzz almaq pulsuzdur. Bəzilərinin toplu təkrar istifadə və kommersiya istifadəsinə məhdudiyyətləri var, lütfən, kolleksiyaya və ya kitabın sponsoruna baxın. Bu mətnlərə demək olar ki, qeyri-məhdud çıxışla, biz ümid edirik ki, mətnlərdən əvvəllər istifadə etməyən insanlar tərəfindən yeni kontekstlərdə geniş istifadəni təşviq edəcəyik.
Hansı standart WordPress səhifə növünü ən az istifadə etdiyinizi soruşsam, çox güman ki, cavabınız arxiv şablonu olacaq. Və ya daha çox ehtimal ki, siz arxiv şablonu haqqında heç eşitməmisiniz - bu, çox populyar deyil. Səbəbi sadədir. Standart yol arxivlərdən istifadə "istifadəçi dostu" olmaqdan uzaqdır.
Gəlin bunu bu gün düzəldək! Gəlin həqiqətən faydalı olan WordPress arxiv səhifəsi yaradaq. Ən yaxşı tərəfi odur ki, bu arxivlərdən istənilən müasir proqramda istifadə edə bilərsiniz WordPress mövzusu saytınızda quraşdırılmışdır. Bununla belə, gəlin əvvəlcə “arxiv səhifəsi” dedikdə nəyi nəzərdə tutduğumuzu anlayaq?
WordPress arxivlərinin tarixi
WordPress-də siz standart konfiqurasiya ilə gələn tonlarla müxtəlif şablonlar və struktur elementlərlə işləyirsiniz. Twenty Fifteen default tema qovluqlarının siyahısına baxsaq, aşağıdakıları görürük:
- 404 səhv səhifəsi
- Arxiv səhifəsi (bugünkü qonağımız)
- Əlavə edilmiş Şəkillər Səhifəsi
- İndeks səhifəsi (əsas səhifə)
- Səhifə şablonu (standart səhifələr üçün)
- Axtarış nəticələri səhifəsi
- Fərdi yazı və əlavə səhifələri
Fərqli məqsədlərə baxmayaraq, bu səhifələr struktur baxımından çox oxşardır və onlar çox vaxt yalnız bir neçə bölmə və ya bir neçə kod sətirində fərqlənirlər. İndeks səhifəsi ilə arxiv səhifəsi arasında yeganə görünən fərq, baxdığınız səhifədən asılı olaraq dəyişən yuxarıdakı əlavə başlıqdır.
Arxiv strukturunun arxasında duran ideya blog administratoruna müxtəlif meyarlar əsasında arxivləri göstərmək üçün rahat və asan yol təklif etməkdir. Axı, bütün bu müxtəlif arxiv səhifələri yalnız indeks səhifəsinin versiyalarıdır; onlar müəyyən bir zaman çərçivəsində nəşr olunan məzmunu, müəyyən bir müəllifi, xüsusi etiketlər və kateqoriyalarla göstərirlər.
Proqramçı nöqteyi-nəzərindən baxdıqda yaxşı səslənir, lakin istifadəçi baxımından bu, ən əlverişli yanaşma deyil. V bu məsələ bir mühüm səviyyə çatışmır - istifadəçinin məzmunu tapmaq niyyəti ilə arxivlərin ayrı-ayrı elementləri arasında olan səviyyə.
Demək istədiyim budur. Hal-hazırda, WordPress saytında arxivləşdirilmiş bağlantıları göstərməyin yeganə daxili yolu vidcet vasitəsilədir. Beləliklə, istifadəçilərə arxivləri araşdırmağa icazə vermək istəyirsinizsə və bunu insanların başa düşəcəyi şəkildə etmək istəyirsinizsə, bütün yan panelləri bir arxivə həsr etməli olacaqsınız (sadəcə müxtəlif strukturlaşma növlərini aşkar etmək üçün: tarixə görə arxivlər) , kateqoriyaların arxivləri, arxiv etiketləri, müəllif hüquqları arxivləri və s.).
Bizə bir növ vasitəçi, ziyarətçini salamlayacaq, arxivdə olduğunu ona izah edəcək, maraqlandığı məzmunu qeyd edəcək və ya populyar məzmun təklif edəcək bir növ səhifə lazımdır.
Bu səbəbdən biz fərdi arxiv səhifəsi yaratmağa qərar verdik.
WordPress-də fərdi arxiv səhifəsini necə yaratmaq olar
Biz nə edəcəyik. Fərdi arxiv səhifəmiz fərdi səhifə şablonuna əsaslanacaq. Bu şablon bizə aşağıdakıları etməyə imkan verəcək:
- Fərdi yazı əlavə edin (mətn, şəkillər, qeydiyyat forması və s. ola bilər - standart WordPress məzmunu).
- Son 15 girişi göstərin (konfiqurasiya edilə bilər)
- Müəllif hüquqları arxivlərinə keçidləri göstərin
- Arxivlərə keçidləri aylara görə göstərin
- Əlavə widget sahələrinə sahib olun (məşhur məzmun, kateqoriyalar, teqlər kimi şeyləri göstərmək üçün).
Nəhayət, səhifə həssas olacaq və istənilən saytda istifadə edilə bilər.
Bununla belə, həqiqətən də bəzi mövzuları əsas götürməliyik. Mən Zerif Lite mövzusundan istifadə etdim. Etiraf edirəm ki, bu, bizim öz mövzularımızdan biridir. Bununla belə, WordPress tema kataloqunda keçən il nəşr olunan 10 ən populyar mövzudan biridir. Ona görə də ümid edirəm ki, siz bundan yararlanacaqsınız.
Bəli, əgər mövzu xoşunuza gəlmirsə, söyüş söyməyə ehtiyac yoxdur. Məqalədə təqdim olunan yanaşmadan istənilən başqa mövzu ilə bağlı istifadə edə bilərsiniz.
Əsas fayldan başlayaraq
Ən çox ən yaxşı model arxiv səhifəsi yaratmaq nədənsə cari temanızın page.php faylıdır:
- Onun strukturu artıq əsas məzmun blokunda ixtiyari məzmunu göstərmək üçün optimallaşdırılıb
- Bu, bəlkə də mövzu strukturunuzdakı ən sadə səhifə şablonlarından biridir.
Buna görə də Zerif Lite mövzusunun page.php faylından istifadə edəcəyik. Mən onun surətini yaradacağam və adını tmpl_archives.php qoyacağam.
(Səhifəni page-archives.php adlandırmadığınızdan əmin olun. "səhifə-" ilə başlayan bütün fayl adları belə hesab ediləcək. yeni şablonlarəsas WordPress mövzu faylı iyerarxiyasındakı səhifələr. Buna görə də biz tmpl_ prefiksindən istifadə etdik).
Gəlin onu aşağıdakı kimi dəyişək:
Bütün bu xətt arxiv səhifəmiz üçün uyğun məzmun faylını ötürməkdir.
Arxiv səhifənizdən lazımsız görünən digər elementləri silə bilərsiniz (məsələn, şərhlər), lakin HTML strukturuna uyğun olan bütün elementləri sildiyinizə əmin olun. Və ümumiyyətlə, sınaqdan qorxma. Axı, birdən bir şey işləməyi dayandırarsa, hər zaman əvvəlki koda qayıda və onu asanlıqla düzəldə bilərsiniz.
Bundan əlavə, faylınızın ən əvvəlində yer almalı olan standart şərhi - şablonun təsvirini unutma (bizim halda, tmpl_archives.php faylında):
Sonda biz aşağıdakı strukturla qalacağıq (rahatlıq üçün bəzi elementlər çıxarılıb):
Bu faylda yalnız struktur elementləri, həmçinin əsas WordPress funksiyalarına zəngləri tərk edərək bütün lazımsız şeyləri silməliyik:
Kodun ən ortasındakı yer tutucu şərh, sonra öz ixtiyari elementlərimizi daxil edəcəyimiz yerdir.
Fərdi salamlamanın əlavə edilməsi
Bu artıq WordPress-in özü tərəfindən həll edilmişdir. Sadəcə aşağıdakı sətri daxil etməliyik:
Yeni widget sahələrinin əlavə edilməsi
Standart bir prosesdən istifadə edərək WordPress-də yeni vidjet sahələri quraq. Mövzudan mövzuya təkrar istifadə edilə bilən şeyləri saxlamaq üçün bunu əlavə funksiya faylı ilə edəcəyik. Biz onu əsas mövzu qovluğuna yerləşdirmək üçün yeni arxiv faylı, arxiv-səhifə-functions.php yaradacağıq və həmçinin iki yeni vidjet əhatəsini qeydiyyatdan keçirəcəyik:
Əgər (! Function_mövcuddursa ("archives_page_widgets_init")): funksiya archives_page_widgets_init () (/ * Birinci arxiv səhifəsi vidceti, SOL tərəfdə göstərilir. * / Register_sidebar (massiv ("ad" => __ ("Arxivlər səhifəsi vidceti SOL", "zerif) -lite ")," təsviri "=> __ (" Bu vidcet arxiv səhifənizin sol tərəfində göstəriləcək. "," zerif-lite ")," id "=>" archives-left "," before_widget " => "
"," başlıqdan əvvəl "=>""," başlıqdan sonra "=>"
",)); / * İkinci arxiv səhifəsi vidceti, SAĞ tərəfdə göstərilir. * / Register_sidebar (massiv (" name "=> __ (" Arxiv səhifəsi vidceti RIGHT "," zerif-lite ")," təsviri "=> __ ("Bu vidcet arxiv səhifənizin sağ tərəfində göstəriləcək.", "Zerif-lite"), "id" => "archives-right", "before_widget" => " "," başlıqdan əvvəl "=>""," başlıqdan sonra "=>"
",));) endif; add_action (" widgets_init "," archives_page_widgets_init ");Əgər (! Funksiya_mövcuddursa ("arxivlər_səhifəsi_üslubları")): funksiya arxivləri_səhifə_üslubları () (əgər (səhifə_şablondur ("tmpl_archives.php")) (wp_enqueue_style ("arxiv-səhifə-stil", get_template_directory_uri (). "/ Arxivlər-stil. css "); // WP-də üslub vərəqlərinin əlavə edilməsinin standart yolu.)) endif; əlavə_fəaliyyət ("wp_enqueue_scripts", "archives_page_styles");
Bu şərti növbə əməliyyatıdır. Bu, yalnız ziyarətçi arxivləşdirilmiş səhifəyə baxdıqda işləyəcək.
Cari mövzunun functions.php faylının sonuna aşağıdakı sətri əlavə etməklə yeni archives-page-functions.php faylımızı daxil etməyi unutmayın:
get_template_directory () tələb edin. "/archives-page-functions.php";
Nəhayət, əsas content-tmpl_archives.php faylımızda istifadə edəcəyimiz yeni blok olduqca sadədir. Aşağıdakı kodu the_content (); zənginin altına qoyun:
İndi etməli olduğumuz yeganə çatışmayan fayl olan archives-page-style.css-in qayğısına qalmaqdır. Bununla belə, gəlin bunu sonraya buraxaq, çünki biz ondan fərdi arxiv səhifəmizin bütün üslubları, o cümlədən vidjetlər üçün depo kimi istifadə edəcəyik.
Son 15 qeyd göstərilir
Bunun üçün bəzi PHP əl kodlaşdırması etməliyik. Yazıların çıxışı müxtəlif vidjetlərdən istifadə etməklə həyata keçirilə bilsə də, gəlin monotonluqdan qaçaq və müxtəlif imkanları daha çox nümayiş etdirmək üçün kodlaşdırmaya dalaq.
Yəqin ki, niyə məhz 15 giriş olduğunu soruşursunuz? Bilmirəm, bu nömrəni sadəcə tavandan götürmüşəm. Gəlin onu fərdi sahələrlə fərdiləşdirək.
Biz nə edəcəyik:
- Arxivləşdirilmiş yazılar-no xüsusi sahəsindən istifadə edərək yazıların sayını təyin edin.
- Əgər nömrə düzgün deyilsə, şablon son 15 qeydin standart dəyərindən istifadə edəcək.
Aşağıda bunu edən kod var. Yeni widget sahələrini idarə edən content-tmpl_archives.php faylında onu əvvəlki bölmənin altına qoyun.
ID, "arxivləşdirilmiş yazılar-yox", doğru)); / * Burada biz "gətirilmiş nömrənin məqbul olduğuna əmin oluruq. 200-dən yüksək və ya 2-dən aşağı olarsa, biz onu sadəcə olaraq defolt dəyəri olan 15-ə sıfırlayırıq. * / if ($ how_many_last_posts> 200) || $ neçə_son_məlumat< 2) $how_many_last_posts = 15; $my_query = new WP_Query("post_type=post&nopaging=1"); if($my_query->var_posts ()) (echo "
"; əks-səda"
- "; $ counter = 1; while ($ my_query-> have_posts () && $ counter<= $how_many_last_posts) {
$my_query->Poçt (); ?>
- ">
Bütün bu kodun etdiyi şey fərdi sahənin dəyərini əldə etmək, göstəriləcək qeydlərin sayını təyin etmək və sonra WP_Query () ; istifadə edərək həmin qeydləri verilənlər bazasından götürməkdir. Mən də bu bloka cazibədarlıq əlavə etmək üçün bəzi Font Awesome nişanlarından istifadə edirəm.
Müəllif hüquqları arxivlərinə keçidlər göstərilir
Bu bölmə yalnız çox müəllifli bloq işlədirsinizsə faydalıdır. Bir müəllifiniz varsa, bunu atlayın.
Bu funksionallıq content-tmpl_archives.php faylımızda (əvvəlki blokun altında) yerləşdirilməli olan sadə kod bloku ilə həyata keçirilə bilər:
Müəlliflərimiz
Bir neçə dəqiqədən sonra üslublara keçəcəyik. Hələlik, hər şeyin wp_list_authors () funksiyasına zənglə edildiyinə diqqət yetirin.
Arxivlərə keçidlər aylar üzrə göstərilir
Oxucuların nöqteyi-nəzərindən ən faydalı komponent olmadığı üçün bu elementi ən sonunda əlavə etdim. Bununla belə, onun arxiv səhifəsində olması vacibdir ki, aylıq arxivləri saytda başqa yerdə göstərmək üçün vidcetlərdən istifadə etməyə ehtiyac qalmasın.
Bu content-tmpl_archives.php faylında belə görünəcək:
Aya görə
Bu halda, biz onu əyri xətlərlə (|) ayrılmış girişlərlə ayrıca paraqraf kimi göstərəcəyik.
Arxiv Səhifə Şablonunu tamamlayın
İstənilən arxivi çıxarmaq üçün əsas faylımız olan tam content-tmpl_archives.php faylına nəzər salaq:
Son ". $ How_many_last_posts." Yazılar
"; əks-səda" "; $ counter = 1; while ($ my_query-> have_posts () && $ counter<= $how_many_last_posts) {
$my_query->Poçt (); ?>
Müəlliflərimiz
Aya görə
Stil vərəqi
Nəhayət, stil cədvəlinə nəzər salaq. archives-page-style.css faylı belə görünür:
Arxivlər-widget-sol (float: sol; en: 50%;) .arxivlər-widget-sağ (float: sol; padding-sol: 4%; en: 46%;) .arxivlər-son bölmə () .arxivlər -son bölmə ol (şrift üslubu: kursiv; şrift ölçüsü: 20px; doldurma: 10px 0;) .arxivlər-son bölmə ol li (doldurma-sol: 8px;) .arxivlər-müəlliflər bölməsi () .arxivlər -müəlliflər bölməsi ul (siyahı üslubu: heç biri; mətni düzləndirmək: mərkəz; haşiyə-yuxarı: 1px nöqtəli # 888; haşiyə-alt: 1px nöqtəli # 888; doldurma: 10px 0; şrift ölçüsü: 20px; kənar: 0 0 20px 0;) .arxiv-müəlliflər-bölməsi ul li (ekran: daxili; doldurma: 0 10px;) .arxiv-müəlliflər-bölməsi ul li a (mətn-bəzək: heç biri;) .arxivlər-aylar-bölmə ( ext-align: center; söz aralığı: 5px;) .arxivlər-ay-bölmə p (sərhəd-yuxarı: 1px nöqtəli # 888; haşiyə-aşağı: 1px nöqtəli # 888; doldurma: 15px 0;) .arxiv- ay-bölmə pa (mətn-bəzək: heç biri;) @media yalnız ekran və (maksimum eni: 600px) (.arxiv-widget-sol (en: 100%;) .arxiv-vidget -sağ (eni: 100%; ))
Üslubların əksəriyyəti şriftlərə və bir neçə struktur elementə aiddir, bir neçə düzülmə və sonunda cavab verən dizayn bloku istisna olmaqla.
Praktikada necə görünəcəyini görək. Arxivdə çoxlu məzmunu olan sayt budur:
Bu şablonu istənilən mövzuya necə inteqrasiya etmək olar
Burada yaratdığımız fərdi arxivlər səhifəsi rəsmi WordPress kataloqunda mövcud olan Zerif Lite mövzusudur. Ancaq əvvəl dediyim kimi, hər hansı bir mövzu ilə birlikdə istifadə edilə bilər. Bunu necə etmək olar:
- Dərslikdə yaratdığımız archives-page-style.css və archives-page-functions.php fayllarını götürüb mövzunun əsas kataloquna yerləşdiririk.
- Mövzunun functions.php-ni redaktə edin və ən sonunda aşağıdakı sətri əlavə edin: tələb get_template_directory (). '/Archives-page-functions.php';
- Mövzunun page.php faylını götürürük, onun surətini çıxarırıq, adını dəyişdiririk, çağırışı get_template_part () funksiyasına get_template_part ('content', 'tmpl_archives') kimi dəyişdiririk və sonra ən əvvəlində təsviri şərh əlavə edirik. : / * Şablon Adı: Arxiv Səhifəsi Xüsusi * /.
- Mövzunuzun content-page.php faylını götürürük, onun surətini çıxarırıq, adını content-tmpl_archives.php olaraq dəyişdiririk və dərslikdə yaratdığımız bütün ixtiyari blokları ona, the_content çağırışının bir qədər aşağısına əlavə edirik ( ); funksiyası.
- Test edirik və həzz alırıq.
Defolt Twenty Fifteen mövzusunda belə görünəcək: