Atualmente, estou usando o seguinte fluxo genérico para adicionar o código curto para um plug-in.
class MyPlugin {
private $myvar;
function baztag_func() {
print $this->myvar;
}
}
add_shortcode( 'baztag', array('MyPlugin', 'baztag_func') );
Agora, quando essa classe e seu método são chamados, recebo o seguinte erro.
Erro fatal: usar $ this quando não estiver no contexto do objeto em ...
(A linha no é onde eu imprimi o $this->myvar
)
Isso é um problema no final do Wordpress ou há algo que estou fazendo de errado? Parece ser algo realmente simples.
plugin-development
shortcode
oop
xmaestro
fonte
fonte
static
.Respostas:
Como o erro indica, você precisa de uma instância da classe para usar
$this
. Existem pelo menos três possibilidades:Tornar tudo estático
Mas isso não é mais POO real, apenas espaço para nome.
Crie um objeto real primeiro
Isso funciona. Mas você enfrenta alguns problemas obscuros se alguém quiser substituir o código de acesso.
Portanto, adicione um método para fornecer a instância da classe:
Agora, quando alguém deseja obter a instância do objeto, ele apenas precisa escrever:
Solução antiga: crie o objeto em sua classe
fonte
NULL === self::$instance and self::$instance = new self;
:? Estou um pouco confuso porque===
eand
usado, mas semif
, se é que você me entende.Você pode usar assim, shortcode dentro da Classe
Se você deseja acessar o conteúdo de shortcode de outra classe. Você pode fazer assim.
fonte
Certifique-se de criar uma instância da sua classe antes de usá-la, a menos que você tenha certeza de que ela deve ser chamada estaticamente. Quando você chama um método estaticamente, não usa nenhuma instância e, portanto, ele não tem acesso a nenhuma variável ou método membro.
fonte