Pentru a aduce o astfel de unitate pentru obiecte taxonomii, vezi descrierea evenimentului: taxonomie _edit_form_fields. De asemenea, a se vedea răspunsul la întrebarea: Metafields pentru pozițiile (taxonomii) în WordPress
Partea din odnaya
Înainte să începem să vorbim despre modul de a crea un bloc de date arbitrare în panoul de administrare pentru a edita pagina de blog. care va gestiona zăcămintele arbitrare menționate, trebuie remarcat faptul că WordPress - o platformă care, poate mai mult decât oricare alta se pretează la extinderea cu cel mai mic efort. În special, acesta este motivul pentru care un plug-in WordPress este scris atât de mult - totul este foarte simplu, trebuie doar să cunoască elementele de bază ale PHP și de a înțelege funcționarea sistemului.
Toți cei care este destul de aproape familiarizat cu WordPress întâlnit în mod repetat, cu conceptul de „câmpuri personalizate“ și să le utilizeze pentru a rezolva unele sarcini non-triviale.
Câmpurile personalizate în WordPress - un instrument foarte util atunci când aveți nevoie pentru a „lipi“ la un anumit post orice informații suplimentare. Astfel de date ar putea fi orice, de la logică adevărat / fals (1/0), care se încheie cu materialul textil tridimensional, și alte matrice. De exemplu, putem crea un nou titlu câmp personalizat și sensul său de a scrie un text (un titlu alternativ post), apoi codul de șablon folosiți următorul cod pentru a afișa acest text:
Trebuie remarcat faptul că get_post_meta () poate fi utilizată în afara ciclului de WordPress, și anume oriunde în model. În acest exemplu, vom folosi în
părți ale documentului pentru a permite antetul paginii HTML diferă de antetul articolul în sine (uneori util pentru SEO).Un alt exemplu este folosind câmpuri personalizate putem lua sau nu efectua o acțiune, în funcție de ce datele stocate în valoarea oricărui câmp. De exemplu, introducerea în orice domeniu de numere logice 1 și 0, putem afișa sau nu afișează nicio informație pentru acest post.
Câmpurile personalizate sunt utilizate în WordPress destul de des, plugin-uri diferite poziții de evaluare (WP-PostRatings), plugin-uri SEO (Platinum SEO Pack), care permit să se specifice titlu, descriere, cuvinte cheie post, plugin-ul meu pentru a crea miniaturi (Kama miniaturile) și multe alte plugin-uri. Figurat vorbind, fiecare al patrulea obiectiv este atins printr-un câmpuri personalizate non-standard, așa că, dacă nu știi deja cum să le folosească, apoi citiți acest manual. Și mai jos, vom vorbi despre modul de a crea o unitate separată cu câmpurile arbitrare dorite și cum să o facă fără plugin-uri.
Puțini oameni știu că, dacă creați un câmp personalizat, care este o cheie (nume) începe cu _ (subliniere), de exemplu, _my_special_key. atunci un astfel de câmp nu va fi afișat în lista de câmpuri personalizate drop-down la editarea de posturi și va fi considerat „intern“ câmp arbitrar care este utilizat de către sistem. Creați un astfel de câmp, puteți interoga doar baza de date, de exemplu, folosind add_post_meta () sau update_post_meta ().
Înainte de a începe crearea
Să presupunem că facem un site pentru a comanda, și câmpuri astfel arbitrare sunt utilizate pe site-ul. Explicați clientului ce câmp pentru a alege din listă pentru a adăuga orice informații pe care doriți să postați o problemă, în plus, este repede uitată. De aceea, pentru o lungă perioadă de timp pentru a scrie un plugin care vă poate ajuta să creați cu ușurință un bloc de câmpuri arbitrare, în cazul în care nu este necesar să se aleagă domeniul (cheie), apoi introduceți o valoare. În astfel de unități ar trebui să intre imediat o valoare, și este posibil să se descrie fiecare câmp, cu o singură privire devine clar că scopul său. Block, care acum vom crea va arata astfel:
Iar datele blocului în sine domenii arbitrare, după ce salvați postul, va fi înregistrată după cum urmează:
Ce vedem? - pentru Inutile curioase chei arbitrare câmpuri (din care am menționat mai sus), care, de altfel, de asemenea, aveți nevoie pentru a alege dintr-o listă drop-down (pot exista acolo nu este 4, și multe altele.): Descriere. robotmeta. selectați și din titlu. Desigur, pentru a crea o meta-bloc câmpuri personalizate - o mare idee.
Creați personalizate câmpuri bloc meta
Pentru a crea metabloka avem nevoie de doar 2 cârlig: add_meta_boxes și save_post. Funcția add_meta_box () și unele cunoștințe de HTML și PHP. Adăugați următorul cod la fișierul functions.php tema:
# 1. Creați o nouă casetă meta pentru postare
Noi o numim „câmpuri suplimentare“:
# 2. Umple această cutie de câmpuri de formular html.
Toate numele câmpurilor am proiectat suplimentar [] matrice. astfel încât mai târziu a fost mai ușor să prelucreze aceste date.
Nume câmp ascuns = „extra_fields_nonce“. aveți nevoie pentru a verifica dacă datele sunt salvate.
În această etapă, ne-am stabilit deja un bloc de câmpuri arbitrare, acum avem nevoie pentru a procesa câmpurile de date menținând în același timp postul. Manipulați, apoi scrie-le în baza de date, sau șterge de acolo. Pentru a face acest lucru, utilizați save_post cârlig. care este declanșat atunci când salvați un post. În acest moment, vom obține datele dintr-o serie de suplimentare [] și să le prelucreze:
Asta e tot, unitatea este gata să câmpuri personalizate!
Acum, suntem schimbați codul HTML pe care le putem edita conținutul blocului meta. Dar nu uitați că numele câmpurilor au forma unui tablou de valori-cheie ale câmpurilor arbitrare: name = „extra [meta_key]“.
Toate codul este în întregime
Blocați câmpuri personalizate pentru orice tip de înregistrare
Dacă doriți să creați un bloc pentru celelalte tipuri de înregistrări, de exemplu, pagina (pentru pagini), apoi înregistrați un alt bloc de meta și descrie-l în codul HTML de funcții noi, care sunt, de asemenea necesar să se specifice la unitatea de înregistrare (extra_fields_box_page_func). Domenii de funcții de procesare de reținere, în timp ce postul de a crea nu mai este necesar, principalul lucru pentru a specifica numele câmpurilor sub forma unor matrici de suplimentare []:
Complexitatea de tip caseta de selectare
Dezavantajul acestei metode constă în faptul că o serie de plus []. Acesta trebuie să fie definit, chiar dacă trece o valoare nulă în caz contrar, câmpul nu va fi procesată în cazul în care datele sunt salvate. În acest sens, problema apare atunci când se utilizează tipul de caseta de selectare.
Pentru a rezolva această „boala“ Am făcut acest lucru: pentru a crea un câmp casetă de selectare nume de câmp ascuns ca caseta și valoarea goală. Și se pare că, în cazul în care caseta este bifată, valoarea câmpului ascuns este întreruptă în cazul în care nu gaia, luată o valoare goală a câmpului ascuns.
Ie casetă de selectare trebuie să fie numit ca aceasta:
Același truc poate fi uneori utilă pentru câmpul cu tipul de radio.
Un exemplu de tipuri de checkbox cod real:
Ușor de configurat câmpuri unitate personalizată pentru ao crea astfel încât este cu siguranta pierdut si eu nu sunt în nici un fel nu vreau să spun că, pentru a crea blocuri astfel încât este mai bună decât folosind plugin-uri. Cu toate acestea, această abordare este mai flexibilă, pentru că putem crea absolut orice domeniu și să le aranjați ca ne place.
În plus, de obicei nu este nevoie de a crea mai multe astfel de blocuri și de multe ori le edita ca acest lucru se poate face cu ajutorul plug-in-uri. De exemplu, pe acest blog, folosesc această abordare, și un cod foarte mic în functions.php mă salvează de a folosi un alt plugin.
Plugin-uri pentru a crea câmpuri personalizate blocuri
În acest articol, am vorbit despre plug-in-uri, care creează blocuri de meta înlocuirea câmpuri personalizate, dar niciodată nu a menționat nici un. corectează:
Avansată Câmpuri personalizate (ACF) - probabil cel mai popular și flexibil plug-in pentru a crea câmpuri personalizate. Cu o bună documentare.
Câmp personalizat Suite - similar cu ACF doar mai putin fanteziste.
Câmp personalizat Template - un procesor reală. Cu aceasta puteți crea orice formă, pentru orice tip post, specificați formularele pentru posturi individuale și coloane. Cred că în cele mai multe cazuri, este posibil să se facă fără un astfel de recoltat.
❮ arhive blog dinamice folosind jQuery (Ajax)