Sou iniciante em PHP e WordPress, por isso seja gentil!
Estou construindo um plugin - seguindo alguns tutoriais, fazendo tudo funcionar.
Minha pergunta é por que a função que eu quero chamar está encerrada no array($this, function)
? Por exemplo, eu tenho esse código construtor dentro da minha classe
function __construct() {
add_action( 'admin_init',array( $this, 'getStuffDone' ) );
}
A função getStuffDone é acionada OK - mas por que ela precisa estar no formato em que está?
Qualquer ideia é bem apreciada.
add_action
com classe e PHP Passando para FunçõesRespostas:
É um retorno de chamada PHP . Você precisa da sintaxe para manter uma referência à instância da classe.
Coloque dessa maneira - se você não tinha
$this
, como o chamador sabe que essegetStuffDone
é um método da sua classe, e não apenas uma função PHP regular? Não faz.Usando o
array( $this, 'getStuffDone' )
say para PHP:fonte
except language constructs such as: array()
, mas aqui estamos passando uma matriz. Isso é um erro de digitação ou estou lendo a frase errada?a definição da função add_action () se parece com:
então, de acordo com o que parece esperado (string, string, int, int)
Em um arquivo php tradicional, o segundo parâmetro seria simplesmente um dos nomes de suas funções.
então você teria
add_action('admin_init','my_init_function')
Parece que você está usando uma classe para encapsular seu plug-in. Outras classes podem ter funções com o mesmo nome ( getStuffDone ).
Portanto, sua função é conhecida apenas com referência à sua classe, é por isso que você precisa especificar sua classe
$this
e o nome da função.Se você estiver tentando fazer referência a uma função dentro de uma classe, precisará usar a sintaxe de chamada da matriz
Veja também codex.wordpress.org
fonte
Consulte a documentação, em " Notas contribuídas pelo usuário ":
fonte