WordPress

Kodo gabalai, idėjos, pastebėjimai

tinyTOC

by


Dar vienas nedidelis įskiepis – automatiniam turinio generavimui pagal antraštes (a la Wikipedia). Tiesiog parsisiųskite ir aktyvuokite. Jei įrašo/puslapio tekste panaudosite daugiau nei dvi antraštes (<h1> – <h5>), įskiepis automatiškai suformuos turinį ir bookmark’us bei įterps juos teksto pradžioje arba pabaigoje.

tinyLogin

by


Kiek sudėtingesnis kodo gabalas – mini įskiepis. Prisijungimo ir registracijos formos WordPress front-end’ui. Tiesiog parsisiųskite, išarchyvuokite ir įdėkite į wp-plugins katalogą. Instrukcijos – aprašyme.

Failų įkėlimas iš front-end’o

by


Šiame pavyzdyje panaudotas karkasas iš ankstesnio įrašo. Kartais reikia suteikti lankytojui galimybę atsiųsti į tinklalapį failą (nuotrauką, dokumentą ar pan.). Tokiu atveju nebūtina išradinėti dviračio ir galima pasinaudoti wordpress funkcija wp_handle_upload(). Plačiau apie ją galite pasiskaityti dokumentacijoje, aš tik paminėsiu, kad jai reikalingi du argumentai – $_FILES masyvo laukas – įkeltas failas, ir array(‘test_form’ => false), nes priešingu atveju failo įkėlimas bus tik simuliuojamas. Ši funkcija yra wp-admin aplinkos dalis, taigi ją į front-end’ą teks įtraukti rankiniu būdu. Esminis kodas šiame pavydyje yra 50 ir 52 eilutės.

Įvairios formos WordPress front-ende

by


Supratau, kad mano ankstesnis pavyzdys ne visiškai geras ir netinka, jei front-ende turim daugiau nei vieną formą. Todėl sudėliojau tokį bendresnį karkasą darbui su WordPress front-endo formomis. Kodas  – iš trijų dalių. Pirma dalis – formos nr. 1 vaizdavimas, antra dalis – formos nr. 2, o trečia dalis – visų formų apdorojimas, kai vartotojas paspaudžia ‘submit’. Paprastumo dėlei iš šio pavyzdžio išėmiau klaidų ir sėkmės pranešimų vaizdavimą.

Pirmi du blokai – labai panašūs. Esminis kodas yra get_tiny_formX() (pakeiskite X į formos numerį) funkcijoje, kur suformuojama forma. Esminis triukas yra input[type=hidden] laukas ‘tiny_action’, nes čia pažymima, kuri tai forma ir ta reikšmė (‘form1’/’form2’/etc.) bus naudojama apdorojimo funkcijoje tiny_handle(). Pagal ‘tiny_action’ reikšmę tiny_handle() atpažįsta, kuri forma buvo išsiųsta ir gali atlikti atitinkamus apdorojimo veiksmus. get_tiny_formX() turi vieną neprivalomą argumentą $redirect, jei jis nustatytas, sėkmės atveju forma nukreipia vartotoją į nurodytą URL.

Tikiuosi, šis pavyzdys bus aiškesnis. P.S. šis kodas talpinamas į temos functions.php failą, arba gali būti naudojamas įskiepyje.

Standartinių widget’ų slėpimas

by


„WordPress“ turi nemažai standartinių widget’ų, kurių beveik niekas nenaudoja. Kad jie nesimaišytų ir naudingi widget’ai nepasimestų, štai kelios eilutės kodo, kurios juos išjungs ir paslėps.

„Must Use“ įskiepiai

by


Gyveni žmogus, ir mokaisi. Tik šiandien dirbdamas prie Tribūnos atradau, kad „Must Use“ įskiepius galima naudoti ne tik Multisite režime, bet ir turint atskiras WordPress svetaines. Vidutiniam WordPress naudotojui iš to gal ir jokios naudos, bet dirbant su keliais tinklalapiais, o ypač kuriant tokią „fermą“ kaip Tribūna – jie netgi labai praverčia.

Pirmiausiai – kas per žvėris yra tie „Must Use“ įskiepiai? Plačiau galite pasiskaityti Codex’e, o trumpai – tai tokie įskiepiai, kurie aktyvuojami automatiškai ir kurių negalima išjungti. Šita savybė labai praverčia, kai turite labai svarbių įskiepių, o tinklalapio kontrolę atiduodate klientui. Taip paliekate mažiau šansų klientui sugadinti svetainę „kažką spaudinėjant“. Tribūna irgi turi keletą tokių būtinų įskiepių: Akismet, nginx-compatibility, specialios Tribūnos funkcijos – dabar man nereikia sukti galvos, kaip sutrukdyti jums šiuos įskiepius (ne)tyčia deaktyvuoti.

Kaip naudoti „Must Use“ įskiepius? Paprasta – užuot įkėlę juos į wp-content/plugins katalogą, kelkite į wp-content/mu-plugins. Tiesa, yra keletas trūkumų. Pirmiausiai, tokių įskiepių versijų WordPress neseks automatiškai ir nepasiūlys atsinaujinti – čia jau jūsų rūpestis. Antra – čia WordPress neieško įskiepių pakatologiuose – tik pagrindiniame katalogie. Kadangi dauguma įskiepių būna būtent pakatalogiuose, reikalingas specialus tarpinis failas. Pavadinkime jį proxy.php (nors tiktų bet koks pavadinimas). Čia Tribūnos proxy failo pavyzdys:

Sėkmės naudojant!

Papildymas: jei kuriate įskiepį, šalia load_plugin_textdomain() nepamirškite panaudoti ir load_muplugin_textdomain(), kitaip jūsų įskiepio lokalizacija neveiks bandant įskiepį panaudoti kaip „Must Use“.

Įrašo modifikavimas saugant

by


Aivaras Twitteryje užklausė, kaip išsaugant įrašą pakeisti įrašo autorių, tad sumečiau čia tokį konceptą. Ši situacija turi vieną komplikaciją – save_post veiksme prikabinta funkcija gali užsisukti į amžiną ciklą, jei jos viduj panaudojama wp_update_post funkcija, nes ši vėl iššaukia minėtą veiksmą. Tai apeinama prieš naudojant wp_update_post atkabinant veiksmą, ir po to vėl prikabinant.

Prisijungimas iš front-end’o

by


Jau kelis kartus man prisireikė paprasto dalyko – kad lankytojas galėtų prisijungti prie svetainės ir tada jam taptų prieinamos papildomos savybės – komentavimas, parsisiuntimai ir panašiai. Bet visiškai nesinori įleisti jo į WordPress valdymo skydą, kur jam visiškai nėra ką veikti. Deja, „WordPress“ nėra linkęs slėptis ir standartinėmis priemonėmis tą padaryti nėra taip paprasta, kaip atrodytų. Todėl parašiau čia paprastą skriptuką tam reikalui.

Tiesiog įdekite šį kodo gabalėlį į savo temos functions.php ir įrašuose galėsite naudoti [ tiny_login ] shortcode’a ir get_tiny_login_form()/the_tiny_login_form() template tag’us šablonuose. Neprivalomu $redirect argumentu galima nurodyti, kur forma turėtų nukreipti lankytoją sėkmingo prisijungimo atveju.

Nepridedu jokio papildomo CSS – jei jūsų išvaizdos tema neturi standartinių stilių formai, teks juos pasirašyti patiems.

Read more

Kodo pavyzdžių įterpimas iš „Gist“

by


Rašant techinėmis temomis (kaip ir šiame blog’e) neretai tenka įterpti programinio kodo pavyzdžius. WordPress’as turi gyvą galą įvairių tam skirtų įskiepių, bet šį kartą noriu parodyti kitokį būdą. GitHub’as turi kodo pavyzdžiams skirtą servisą „Gist“, kuris turi įvairių patogių savybių – įterptą kodą galima taisyti, fork’inti ir pan. O „WordPress“ turi labai patogaus oEmbed protokolo palaikymą. Remiantis šiuo protokolu, užtenka į tekstą įdėti palaikomo serviso nuorodą ir sistema toje vietoje automatiškai įterpia reikalingą turinį, pavyzdžiui YouTube ar SoundCloud grotuvą.

„Gist“ irgi palaiko šį protokolą, bet į „WordPress“ standartinį tiekėjų (providers) sąrašą jis, deja, neįtrauktas. Tačiau tai galima nesunkiai ištaisyti. Tiesiog įdėkite žemiau esantį kodą į savo temos functions.php failą, arba kaip atskirą failą į įskiepių katalogą. Jei naudosite kaip įskiepį, jį dar reikės aktyvuoti.

HTML5: ‘figure’ ir ‘figcaption’ elementai paveikslėlių įterpimui

by


HTML5 turi naujus semantinius elementus iliustracijų ir jų aprašymų įterpimui į tekstą – <figure> ir <figcaption>. Deja, „WordPress“ šitoj vietoj vis dar senamadiškas ir paveikslėlio įterpimui naudoja div’ą (jei paveikslėlis – su antrašte) arba įterpia juos plikus. Pabandykime tą pakeisti.

Pradėkime nuo paprastesnio atvejo  – paveikslėlio su antrašte. „WordPress“ tiesiogiai į tekstą viso HTML nededa, o naudoja tam shortcode . Todėl šiuo atveju tereikia filtro pagalba pakeisti šio gražinamą HTML’ą:

Truputį sudėtingiau yra su tais paveikslėliais, kurie įterpiami be antraštės – „WordPress“ juos įterpia plikus – tik nuorodą ir img žymą. Todėl padariau tokią gudrybę – filtro pagalba pats suformuoju ir pridedu caption shortcode’ą: