WordPress Hooks (events), Actions en filters

WordPress Hooks (events), Actions en filters

WordPress voert, bij bepaalde gebeurtenissen (stappen tijdens het laden van WordPress),  functies (Actions/Filters) uit die geregistreerd zijn aan een bepaald event (gebeurtenis) d.m.v. “Hooks”. Actions en Filters in WordPress zijn functies die aangepast kunnen worden door de developers om de standaard functionaliteit aan te passen.

Filters are different than Actions. WordPress actions are executed at events like when a theme or plugin is activated, or when a post is published. Filters are used to filter output when it is sent to either database or to user browser.

Voorbeeld php met diverse hooks:

<?php
// INI - Set up HOOKS - Acties zetten ==================================
// plugins zijn geladen core vars zetten, classes laden
add_action( 'plugins_loaded', 'a3d_plugLoaded' );
// INITIALISEREN Meeste geladen geladen - alles toegankelijk
add_action( 'init', 'a3d_ini' );
// WordPress volledig geladen (maar nog niets te zien op scherm)
add_action( 'wp_loaded','a3d_wpLoaded' );
// footer geladen (net voor de sluit (body) tag
add_action( 'wp_footer', 'a3d_footerLoaded', 100 );


// CALLBACKS - ACTIONS =================================================
// plugins zijn geladen
function a3d_plugLoaded() {
a3d_trace("a3d-tester FRONT/BACK: 1. Plugins zijn geladen");
}
// INITIALISEREN Meeste geladen - alles toegankelijk
function a3d_ini() {
a3d_trace("a3d-tester FRONT/BACK: 2. INITIALISEREN Meeste geladen alles toegankelijk");
}
// WordPress volledig geladen (maar nog niets te zien op scherm)
function a3d_wpLoaded() {
if ( !is_admin() ) {
// Only target the front end
a3d_trace("a3d-tester FRONT/BACK: 3a. WP is volledig geladen. Nog geen view FROND END");
} else {
// Only target the back end
a3d_trace("a3d-tester FRONT/BACK: 3b. WP is volledig geladen. Nog geen view BACK END");
}
}
// footer geladen (net voor de sluit tag </body> - Alleen op FROND END
function a3d_footerLoaded() {
a3d_trace("a3d-tester FRONT: 4. footer geladen (net voor de sluit tag body)- Alleen op FROND END");
}

// WORKERS ==============================================================
function a3d_trace($msg){
echo '<script type="text/javascript">alert("' . $msg . '")</script>';
}
?>

Voorbeeld van hook actie (functie) die word uitgevoerd als de profielpagina van een gebruiker geladen word (onder kleuren keuzes, boven gebruikers naam):

// profielpagina hook - onder kleuren keuze, boven naam
add_action( 'profile_personal_options', 'extra_profile_fields' );
    
function extra_profile_fields( $user ) {
    // haal de waarde uit een enkele meta key
    $meta_value = get_user_meta( $user->ID, 'meta_key', true ); // $user bevat WP_User object
    // doe er iets mee.
    ?>
    <input type="text" value="<?php echo esc_attr( $meta_value ); ?>" name="value" />
    <?php
}

Bronnen:

Reageren is niet mogelijk.