Ce face remove_action
remove_action() și remove_filter() anulează un add_action() / add_filter() făcut de nucleu, de tema părinte sau de un plugin. remove_action() este un alias pentru remove_filter(), deci fac același lucru.
Regula importantă: $callback și $priority trebuie să fie exact cele de la adăugare. Dacă funcția a fost adăugată cu prioritatea 20 și o scoți fără prioritate (adică 10), nu se întâmplă nimic și nu primești niciun avertisment.
Contează și momentul: funcția trebuie să fi fost deja adăugată, iar acțiunea să nu fi rulat încă. De aceea scoaterea se face des dintr-un hook care rulează mai târziu, de exemplu after_setup_theme sau init.
Parametri
| Parametru | Descriere |
|---|---|
$hook_name |
Numele acțiunii sau al filtrului de care este legată funcția. |
$callback |
Aceeași funcție dată la adăugare: numele ei ca text sau array( $obiect, 'metoda' ) cu același obiect. |
$priority |
Opțional, implicit 10. Trebuie să fie prioritatea folosită la adăugare. |
Ce returnează
true dacă funcția era legată și a fost scoasă, false altfel.
Exemple
Exemplul 1: Fără paragrafe automate în conținut
Nucleul leagă wpautop de the_content cu prioritatea implicită 10. Fără el, liniile goale din conținut nu mai devin <p>.
remove_filter( 'the_content', 'wpautop' );
Exemplul 2: Scoți o funcție a temei părinte
Tema părinte are add_action( 'wp_footer', 'parinte_credite', 20 );. functions.php al temei copil se încarcă înaintea celui părinte, așa că scoaterea se face în after_setup_theme, care rulează după ce ambele au fost încărcate.
add_action( 'after_setup_theme', 'dex_scoate_credite' );
function dex_scoate_credite() {
remove_action( 'wp_footer', 'parinte_credite', 20 );
}
Exemplul 3: Prioritatea greșită nu scoate nimic
wp_generator (eticheta meta cu versiunea WordPress) este legat de wp_head cu prioritatea 10. Primul apel, cu prioritatea 1, eșuează; al doilea reușește.
add_action( 'init', function () {
var_dump( remove_action( 'wp_head', 'wp_generator', 1 ) );
var_dump( remove_action( 'wp_head', 'wp_generator' ) );
} );
Ce afișează pagina
bool(false)
bool(true)
Greșeli frecvente
- Altă prioritate decât la adăugare: verifică în codul temei sau al pluginului al treilea argument din
add_action()și folosește-l exact. - Scoatere prea devreme: în
functions.phpal temei copil, funcția părintelui nu a fost încă adăugată. Mutăremove_action()într-un hook ulterior (after_setup_theme,init). - Metode de clasă:
array( 'Clasa', 'metoda' )nu scoate o funcție adăugată cuarray( $obiect, 'metoda' ); ai nevoie de același obiect. Funcțiile anonime nu pot fi scoase deloc.
Comenzi înrudite
add_action: Leagă o funcție de o acțiune WordPress, ca să ruleze automat când WordPress ajunge în acel punct.add_filter: Leagă o funcție de un filtru: WordPress îi dă o valoare, iar funcția întoarce valoarea modificată.the_content: Filtrul prin care trece conținutul unui articol după ce este citit din baza de date și înainte de a fi afișat.