Actualmente estoy usando el siguiente flujo genérico para agregar el shortcode para un complemento.
class MyPlugin {
private $myvar;
function baztag_func() {
print $this->myvar;
}
}
add_shortcode( 'baztag', array('MyPlugin', 'baztag_func') );
Ahora, cuando se llama a esta clase y su método, obtengo el siguiente error.
Error fatal: usar $ this cuando no está en el contexto del objeto en ...
(La línea no es donde he impreso $this->myvar
)
¿Es este un problema al final de Wordpress o hay algo que estoy haciendo mal? Parece ser algo realmente simple.
plugin-development
shortcode
oop
xmaestro
fuente
fuente
static
.Respuestas:
Como dice el error, necesita una instancia de la clase para usar
$this
. Hay al menos tres posibilidades:Haz todo estático
Pero eso ya no es OOP real, solo espacios de nombres.
Crea un objeto real primero
Esto funciona. Pero te encuentras con algunos problemas oscuros si alguien quiere reemplazar el shortcode.
Entonces agregue un método para proporcionar la instancia de clase:
Ahora, cuando alguien quiere obtener la instancia del objeto, solo tiene que escribir:
Solución anterior: crea el objeto en tu clase
fuente
NULL === self::$instance and self::$instance = new self;
? Estoy un poco confundido porque===
yand
se usan, pero sinif
, si sabes a lo que me refiero.Puedes usar así, shortcode dentro de la clase
Si desea acceder al contenido de shortcode de otra clase. Puedes hacer así.
fuente
Asegúrese de hacer una instancia de su clase antes de usarla, a menos que esté seguro de que se debe llamar estáticamente. Cuando llama a un método de forma estática, no utiliza ninguna instancia y, por lo tanto, no tiene acceso a ninguna variable o método miembro.
fuente