În timp ce WordPress afișează cu ușurință imagini atașate paginilor și postărilor dvs. (chiar și fără attachment.php fișier), celelalte tipuri de conținut media (audio, video, document, text, arhivă, cod, interactive) nu primesc aceeași dragoste - salvați o legătură directă cu fișierul de atașament. Dar, nu trebuie să recurgeți la încărcarea fișierelor audio, video sau a altor materiale care nu apar în altă parte (cum ar fi YouTube) pentru a le afișa pe site-ul dvs. WordPress. Folosind tema implicită Twenty Eleven ca exemplu, vă voi arăta funcțiile built-in pentru a împărtăși dragostea cu atașamentele media non-imagine.
Sub capota, elementele media sunt doar WordPress posturi, prin urmare, acestea sunt afișate în conformitate cu ierarhia șablonului WordPress. Încărcătorul șablon face o verificare pentru a vedea dacă postul este un atașament și are un șablon de atașament. Dacă un șablon de atașament nu există, WordPress va reveni la șablonul post unic sau la implicit index.php șablon (dacă șablonul de post unic nu există).
În postul unic sau index.php șabloane, temele WordPress vor afișa probabil conținutul utilizând continutul
. Această funcție are atașat un filtru implicit - prepend_attachment
- care va adăuga automat o legătură de atașament la pagină (folosind wp_get_attachment_link
funcția) dacă determină că acesta este un post de atașament. Cu toate acestea, argumentele utilizate aici în apelul la wp_get_attachment_link
va oferi doar un afișaj real pentru atașamentele de imagine - fișierele de atașament non-imagine primesc doar un link direct la fișierul atașament. (Unde este dragostea?) Am putea afișa potențial mai mult decât doar o legătură pentru atașamente non-imagine cu o simplă schimbare a argumentelor wp_get_attachment_link
, dar, din păcate, nu avem o modalitate de a modifica argumentele înainte ca funcția să fie apelată.
Deci, haideți să aruncăm o privire la ceea ce noi poate sa pentru a arăta atașamentele non-imagine dragoste.
Primul lucru pe care îl vom face este determinarea tipului de fișier al atașamentului. WordPress permite încărcarea mai multor tipuri de fișiere, găsite în get_allowed_mime_types
funcția prezentată mai jos.
Deși ecranul de administrare al Bibliotecii media afișează numai filtre pentru cele trei tipuri de fișiere implicite, pagina Editare pentru fiecare element media afișează tipul exact de fișier. Tipul de fișier este în format MIME (MIME este un standard îndelungat pentru clasificarea tipurilor de fișiere pe Internet) care are două părți: tipul și subtipul separate de /. În imaginea de mai jos, tipul este "video", iar subtipul este "mp4". Aceste cunoștințe vor fi utile pentru pasul 2.
WordPress are o funcție integrată pentru determinarea tipului de fișier al unui atașament utilizând ID-ul postului de atașament.
get_post_mime_type ($ ID)
Această funcție va returna tipul de fișier în format MIME, așa cum este afișat în pagina de editare a elementului media din admin.
Acum suntem gata să preluăm controlul asupra afișării atașamentelor non-imagine în fișierele șablonului tematic.
Așa cum se arată în imagine, ierarhia șablonului WordPress are patru șabloane de atașament posibile pe care le va căuta după ce va determina afișarea unei postări de atașament. Putem gestiona fie afișarea fiecărui tip de fișier în attachment.php fișier sau putem crea fișiere șablon separate pentru fiecare tip MIME și / sau subtip MIME. Să aruncăm o privire la aceste opțiuni.
Putem gestiona afișarea fiecărui tip de fișier în attachment.php folosind noastre la îndemână get_post_mime_type
funcţie.
În primul rând, vom obține tipul de fișier al atașamentului (în interiorul bucla):
ID); ?>
Apoi, putem face o instrucțiune de comutare pe tipul de fișier pentru a furniza codul pentru afișarea fiecărui tip:
Deci, dacă dorim să afișăm atașamente audio (mp3) și video (mp4), instrucțiunea noastră de comutare ar arăta astfel:
Utilizarea attachment.php este minunat dacă aveți doar câteva tipuri de fișiere de afișat (sau afișarea fiecărui tip de fișier va urma același aspect de bază), deoarece ne permite să păstrăm codul nostru într-un singur fișier. Dacă avem mai multe tipuri de fișiere și / sau aveți de gând să personalizați aspectul de afișare pentru fiecare tip de fișier, veți dori să aruncați o privire la opțiunea 2.
$ mimetype
.php, $ mimesubtype
.php sau $ mimetype
_$ mimesubtype
.phpattachment.php
este de fapt șablonul de rezervă pentru fișierele șablon cu numele tipului MIME sau subtipului MIME al postării curente de atașament. WordPress va căuta fișiere cu nume ca $ mimetype
.php, $ mimesubtype
.php, sau $ mimetype
_$ mimesubtype
.php înainte de a reveni la attachment.php.
Deci, în loc să chemați get_post_mime_type
și utilizând o instrucțiune switch, putem crea doar un fișier șablon cu numele tipului sau subtipului MIME:
și plasați codul pentru a afișa acel tip de fișier.
Notă: Numele de fișiere sunt listate în ordinea în care WordPress le va apela. Asa de $ mimetype
.php în primul rând, apoi înapoi la $ mimesubtype
.php, apoi înapoi la $ mimetype
_$ mimesubtype
.php.
Acum, să vedem câteva exemple.
Nu știu despre tine, dar personal nu-mi place să trebuiască să descarce un document pe computerul meu doar pentru ao vedea. Să învățăm ajutorul programului Google Docs Viewer încorporabil. Poate afișa PDF-uri, foi de calcul, prezentări și multe alte tipuri de fișiere listate în Ajutorul Google. Nu există nicio cerință pentru ca documentele dvs. să fie găzduite în Google Docs, deoarece acestea vor încorpora un vizualizator chiar în pagină, trecând adresa URL a unui fișier și setând parametrul încorporat la adevărat.
Iată cum ne vom ocupa de afișarea documentelor utilizând Google Docs Viewer în attachment.php după obținerea tipului de fișier:
comutator (tip $) caz 'cerere / pdf': cazul 'application / msword':?>Sau, am putea crea unul dintre următoarele fișiere șablon:
și plasați următorul cod în care doriți să afișați conținutul în bucla:
Rețineți că transmitem URL-ul fișierului atașament la vizualizatorul Google Docs utilizând wp_get_attachment_url
funcţie.
Rezultat final:
Pentru a afișa (redă) fișiere audio încărcate în WordPress și pentru a oferi o experiență consistentă în browser-ul browserului, vom încerca să obținem ajutorul librăriei audio.js ușoare care ne permite să folosim HTML5 audio
tag-ul oriunde, care se încadrează înapoi în flash în browsere care încă nu acceptă audio HTML5.
Mai întâi, descărcați și plasați audio.js fișiere în tema dvs. Apoi, în tine functions.php fișier, adăugați codul pentru a enqueue audio.js javascript numai pe paginile de atașament (conform celor mai bune practici). Sunt sigur că există alte modalități de a face acest lucru - inclusiv utilizarea recomandată wp_enqueue_scripts
acțiune și câteva afirmații condiționale - totuși, voi ilustra metoda din acest articol: Sfat rapid: Includerea numai a JavaScript și CSS pe anumite pagini de site
add_filter ('attachment_template', 'ncb_attachment_template'); funcția ncb_attachment_template ($ template_path) wp_enqueue_script ('audio-js', get_template_directory_uri () ./js/audiojs/audiojs/audio.min.js '); add_action ('wp_head', 'ncb_audio_js'); returnați $ template_path; funcția ncb_audio_js () echo '„;
Apoi, putem adăuga următorul cod la adresa noastră attachment.php fişier:
Iată declarația noastră completă de comutare până la acest punct:
Sau, am putea crea unul dintre următoarele fișiere șablon:
și adăugați codul nostru audio în bucla în care dorim să afișăm conținutul:
Notă: Dacă utilizați fișiere de șablon tip fișier, JavaScript trebuie să fie enqueued doar pe acele pagini.
Rezultat final:
Putem afișa (redă) fișierele video încărcate în WordPress la fel ca audio, cu excepția faptului că vom invita ajutorul video.js bibliotecă care ne permite să folosim HTML5 video
tag-ul oriunde, care se încadrează înapoi în flash în browsere care încă nu acceptă video HTML5.
La fel ca în cazul sunetului, vom descărca fișierele, le vom adăuga în directorul tematic și vom enula video.js javascript numai în paginile de atașament, cu excepția adăugării unui fișier CSS:
wp_enqueue_script ('video-js', get_template_directory_uri (). '/js/video-js/video.min.js'); wp_enqueue_style ('video-js-css', get_template_directory_uri (). '/js/video-js/video-js.min.css');
Iată-le pe deplin functions.php fragment:
add_filter ('attachment_template', 'ncb_attachment_template'); funcția ncb_attachment_template ($ template_path) wp_enqueue_script ('audio-js', get_template_directory_uri () ./js/audiojs/audiojs/audio.min.js '); add_action ('wp_head', 'ncb_audio_js'); wp_enqueue_script ('video-js', get_template_directory_uri (). '/js/video-js/video.min.js'); wp_enqueue_style ('video-js-css', get_template_directory_uri (). '/js/video-js/video-js.min.css'); returnați $ template_path; funcția ncb_audio_js () echo '„;
Apoi, putem adăuga următorul cod la adresa noastră attachment.php fişier:
„;Iată întreaga noastră declarație de comutare:
„;Sau, am putea crea unul dintre următoarele fișiere șablon:
și adăugați codul nostru video în bucla în care dorim să afișăm conținutul:
Tine minte: Atunci când utilizați fișiere de șablon de tip fișier în loc de attachment.php, va trebui să schimbați numele filtrului utilizat pentru a apela funcția care încalcă JavaScript-ul.
Rezultat final:
Non-imagine atașamente mass-media în WordPress nevoie de dragoste, de asemenea! Folosind doar două funcții WordPress, puteți să păstrați fișierele media pe site-ul dvs. și să personalizați afișarea și aspectul oricăror tipuri de fișiere permise.
Descărcați și / sau introduceți codul de lucru pe Github.
Funcțiile WordPress
continutul
prepend_attachment
wp_get_attachment_link
get_allowed_mime_types
get_post_mime_type
wp_get_attachment_url
Fișierele șablon WordPress
$ mimetype
.php$ mimesubtype
.php$ mimetype
_$ mimesubtype
.php