Torsdag v23 – Skapa egna actions och filters i WordPress

Förutom WordPress inbyggda actions och filters kan plugins skapa egna med hjälp av do_action() och apply_filters(). Med hjälp av dessa två funktioner kan du som utvecklare få din plugin att ”prata” och dela ut data till WordPress core, plugins, och teman.

do_action()

Med do_action() deklarerar du egna actions i WordPress. Den första parametern är namnet på din action, alla följande parametrar skickas vidare till add_action() callback funktioner.

// Do a simple custom action, that sends
// up to two parameters to action handlers
$arg1 = "Hej";
$arg2 = "Hopp";
do_action('myExampleAction', $arg1, $arg2);

do_action() dokumentation

Alla plugins som har lagt till en callback för din custom action kommer nu att köras i prioriteringsordning. Beroende på hur många inparametrar var action ber om kan var funktion ta emot en eller flera parametrar som du skickar med.

function exampleActionCallback($arg1, $arg2) {
  echo $arg1 . ' ' . $arg2;
}

// registering callback for custom action
add_action('myExampleAction', 'exampleActionCallback', 10, 2);
// 10 is priority
// 2 is how many parameters to accept

add_action() dokumentation

apply_filters()

Med apply_filters() kan du där som helst i din pluginkod applicera filter på variabler. Dessa filter kan i sin tur andra funktioner och plugins lägga till callbacks som tar bort, lägger till, och/eller ändrar värden på variabler.

  // the variable to filter
  $data_to_filter = array(
    "param1" => 1,
    "param2" => 2,
  );
  // you can send additional parameters!
  $arg1 = true;
  $arg2 = "hi!";

  $data_to_filter = apply_filters('exampleFilter', $data_to_filter, $arg1, $arg2);
  // $data_to_filter has now been altered by any and all callbacks to 'exampleFilter'

apply_filters() dokumentation

Alla plugins kan nu lägga till en callback som manipulerar $data_to_filter och returnerar ett nytt värde för den.

  // Accepting two arguments (out of three possible).
  function exampleFilterCallback( $value, $arg1 ) {
    // alter the value we are filtering
    unset $value['param1'];
    // do something with the extra parameter (cannot be filtered)
    echo $arg1;
    return $value
  }

  // registering callback for custom filter
  add_filter( 'exampleFilter', 'exampleFilterCallback', 10, 2 );
  // 10 is priority
  // 2 is how many parameters to accept

add_filter() dokumentation

Läs mer om custom hooks

0 votes