Come ben sappiamo WordPress da la possibilità di inserire delle funzioni in determinati punti dell’esecuzione del codice attraverso l’uso di add_filter() e add_action(). Per farlo sfrutta le potenzialità della funzione che permette per l’appunto di richiamare dinamicamente l’esecuzione di una funzione passandone nome ed argomenti.

La sintassi di add_filter() nello specifico:

add_filter( $tag, $function_to_add, $priority, $accepted_args );

Nonostante il concetto sia chiaro, ieri sera durante la realizzazione di un progetto sono rimasto bloccato nel trovarmi ad applicare un nuovo filtro non passando una funzione ma piuttosto un metodo dall’istanza di una classe. E’ stato sufficiente dare un’occhiata alla pagina di documentazione di call_user_func() per venirne fuori.

call_user_func( array( $this, 'some_function') );

Il codice completo dell’esempio:

class myClass {
   
    public $property;

    public function __construct( $var ) {
        $this->property = $var;
        // Aggiungo un filtro passandogli il valore di $property
        add_filter( 'filter_hook', array( $this, 'my_method') );
    }

    public function my_method( $arg ) {
        return $arg . $this->property;
    }

}

// Il 'foo' viene passato al filtro
$istanza = new myClass( 'Foo' );

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *