WordPress: add_action richtig deklarieren

2. Dezember 2011 - wordpress

Die Angaben in add_action müssen nach den php callback Konventionen  (Klassenname, Methode) erstellt werden.

Z.B


class abc {

function abc() {
add_action('wp_enqueue_scripts', array ('abc','my_scripts'),6);
}
function my_scripts() {

....

Oft  wird  aber auch in der Literatur folgendes vorgeschlagen

class abc {

function abc() {
add_action('wp_enqueue_scripts', array (&$this,'my_scripts'),6);
}
function my_scripts() {

....

Der kleine Unterschied ist:  &$this trägt nicht nur den benötigten Klassennamen sondern auch den  gesamten Code der Klasse ein.

Hier sieht man den Unterschied im array wp_filters

Fall1:


results of wp_filter:

Array
 (
 [5] => Array
 (
 [abccb123] => Array
 (
 [function] => Array
 (
 [0] => abc
 [1] => cb123
 )

[accepted_args] => 1
 )

)

)

Fall2:


results of wp_filter:
 Array
 (
 [5] => Array
 (
 [000000003079115c0000000037d96f3dcb123] => Array
 (
 [function] => Array
 (
 [0] => abc Object ......
 (
 )

[1] => cb123
 )

[accepted_args] => 1
 )

)

)

WordPress bekommt es (meistens?) offensichtlich immer noch hin, trotzdem einen gültigen Eintrag in wp_filters zu erzeugen, aber der Rechenaufwand z.B. für die Erzeugung der ID („abccb123“ gegenüber „000000003079115c0000000037d96f3dcb123“ ist ungleich größer

Wenn man auf der sicheren Seite stehen will, sollte man also auf  &$this in add_action verzichten.