Ce face get_post_meta / update_post_meta
Câmpurile personalizate (post meta) sunt perechi cheie–valoare atașate unui articol, păstrate în tabelul wp_postmeta. get_post_meta() le citește, update_post_meta() setează o valoare (o creează dacă nu există), add_post_meta() adaugă încă o valoare pentru aceeași cheie, iar delete_post_meta() șterge cheia.
Cu $single = true, get_post_meta() întoarce o singură valoare; cu false (implicit) întoarce un tablou cu toate valorile cheii. Valorile simple vin înapoi ca șiruri (25 devine "25", true devine "1"), iar tablourile și obiectele se salvează serializate și revin cu tipul lor.
Cheile care încep cu _ (de exemplu _dex_pret) sunt considerate protejate și nu apar în caseta „Câmpuri personalizate” din editor. Valorile trec prin stripslashes() la salvare: pentru JSON sau text cu backslash folosește wp_slash().
Parametri
| Parametru | Descriere |
|---|---|
$post_id |
ID-ul articolului. |
$key / $meta_key |
Cheia câmpului. La get_post_meta(), fără cheie primești toate câmpurile articolului. |
$single |
get_post_meta(): true întoarce o valoare, false (implicit) un tablou. Nu are efect fără $key. |
$meta_value |
Valoarea de salvat; tablourile și obiectele se serializează automat. |
$prev_value |
update_post_meta(): actualizează doar intrările care au această valoare veche. Implicit toate. |
$unique |
add_post_meta(): cu true nu adaugă dacă cheia există deja. Implicit false. |
Ce returnează
get_post_meta(): valoarea (cu $single) sau un tablou; șir gol / tablou gol dacă cheia lipsește; false pentru un ID invalid. update_post_meta(): ID-ul noului meta dacă cheia nu exista, true la actualizare, false la eșec sau dacă valoarea era aceeași. add_post_meta(): ID-ul meta sau false. delete_post_meta(): true sau false.
Exemple
Exemplul 1: Salvezi un preț și îl citești înapoi
Numărul 25 se întoarce ca șirul "25"; pentru calcule îl convertești cu (int) sau (float).
wp eval 'update_post_meta( 42, "pret", 25 ); var_dump( get_post_meta( 42, "pret", true ) );'
Ieșire în terminal
string(2) "25"
Exemplul 2: Mai multe valori pentru aceeași cheie
add_post_meta() adaugă rânduri separate; fără $single primești tabloul tuturor valorilor.
wp eval 'add_post_meta( 42, "oras", "Iași" ); add_post_meta( 42, "oras", "Cluj" ); print_r( get_post_meta( 42, "oras" ) );'
Ieșire în terminal
Array
(
[0] => Iași
[1] => Cluj
)
Exemplul 3: Afișezi câmpul în șablon
Verifici dacă valoarea există (șirul gol e fals) și o escapezi la afișare.
<?php
$pret = get_post_meta( get_the_ID(), 'pret', true );
if ( $pret ) {
echo '<p class="pret">' . esc_html( $pret ) . ' lei</p>';
}
Ce afișează pagina
<p class="pret">25 lei</p>
Greșeli frecvente
- Uiți
trueca al treilea argument și primeștiArrayîn pagină în loc de valoare. - Tratezi
falsede laupdate_post_meta()ca eroare: îl primești și când valoarea nouă e identică cu cea salvată. - Salvezi JSON cu
update_post_meta()și backslash-urile dispar; trece valoarea prinwp_slash(). - Folosești chei fără prefix (
pret) într-un plugin public: alt plugin poate folosi aceeași cheie. Un prefix (dex_pret) evită conflictele.
Comenzi înrudite
wp_insert_post: Creează un articol (sau îl actualizează, dacă dai ID) din cod; wp_update_post() modifică doar câmpurile date.save_post: Acțiunea care rulează după ce un articol, o pagină sau alt tip de conținut a fost salvat; o folosești pentru câmpuri personalizate.WP_Query: Clasa care interoghează articole, pagini și tipuri personalizate după criterii: tip, categorie, câmpuri, ordine, paginare.get_option / update_option: Citesc, salvează și șterg setări permanente ale site-ului în tabelul wp_options (Options API).