Ce face do_action
do_action() este partea „care anunță”: când codul ajunge aici, WordPress rulează, în ordinea priorităților, toate funcțiile legate cu add_action() de acel nume. Toate hook-urile de acțiune ale nucleului (init, wp_head, save_post) sunt apeluri do_action().
Poți crea propriile hook-uri: un apel do_action( 'dex_comanda_plasata', $id, $total ) în pluginul tău lasă alt cod (o temă copil, alt plugin) să reacționeze fără să-ți modifice fișierele. Argumentele de după nume ajung la funcțiile legate (câte cer ele prin $accepted_args).
Funcția nu întoarce nimic. Dacă vrei ca alt cod să-ți schimbe o valoare, folosește apply_filters(). Parametrul variadic ...$arg apare oficial în semnătură din WordPress 5.3.0. Funcții utile alături: has_action() (verifică dacă ceva e legat) și did_action() (de câte ori a rulat o acțiune).
Parametri
| Parametru | Descriere |
|---|---|
$hook_name |
Numele acțiunii. Pentru hook-urile proprii folosește un prefix unic (dex_). |
...$arg |
Opțional. Oricâte valori suplimentare, trimise funcțiilor legate. |
Ce returnează
Nimic (void).
Exemple
Exemplul 1: Un hook propriu într-un plugin de comenzi
Pluginul anunță comanda plasată cu două argumente. Alt fragment de cod se leagă cu 10, 2 și scrie în debug.log.
// În plugin, după salvarea comenzii:
do_action( 'dex_comanda_plasata', $comanda_id, $total );
// În alt plugin sau în tema copil:
add_action( 'dex_comanda_plasata', 'dex_jurnal_comanda', 10, 2 );
function dex_jurnal_comanda( $comanda_id, $total ) {
error_log( sprintf( 'Comanda %d: %.2f lei', $comanda_id, $total ) );
}
Rezultat
[25-Oct-2026 10:15:02 UTC] Comanda 1043: 85.50 lei
Exemplul 2: Un loc în șablon unde alții pot adăuga HTML
Tema pune un hook în header.php; tema copil adaugă un anunț acolo fără să copieze fișierul.
// header.php (tema):
do_action( 'dex_inainte_de_meniu' );
// functions.php (tema copil):
add_action( 'dex_inainte_de_meniu', 'dex_anunt' );
function dex_anunt() {
echo '<div class="dex-anunt">' . esc_html( 'Livrare gratuită în Iași peste 100 lei' ) . '</div>';
}
Ce afișează pagina
<div class="dex-anunt">Livrare gratuită în Iași peste 100 lei</div>
Greșeli frecvente
- Nume fără prefix (
do_action( 'comanda' )): alt plugin poate folosi același nume și funcțiile se amestecă. Foloseștedex_comanda_plasata. - Aștepți o valoare înapoi:
$x = do_action( ... )nu primește nimic. Pentru valori modificabile foloseșteapply_filters(). - Schimbi ordinea sau numărul argumentelor unui hook deja folosit de alții: codul legat de el primește alte valori și se strică.
Comenzi înrudite
add_action: Leagă o funcție de o acțiune WordPress, ca să ruleze automat când WordPress ajunge în acel punct.apply_filters: Trece o valoare prin toate funcțiile legate de un filtru și întoarce rezultatul final; cu un nume nou, creează un filtru propriu.remove_action: Scoate o funcție legată de o acțiune sau de un filtru; callback-ul și prioritatea trebuie să fie identice cu cele de la adăugare.