Sobrescribir una función de clase de plugin
18 oct 2017, 11:02:35
Vistas: 17.8K
Votos: 5
Tengo algo similar a lo que se menciona aquí.
En una clase de un plugin de terceros hay una función que quiero sobrescribir extendiendo esa clase.
La función original de la clase:
class Import_Facebook_Events_Facebook {
public function get_location( $facebook_event ) {
if ( !isset( $facebook_event->place->id ) ) {
return null;
}
//otro código aquí
}
Lo que intenté, pero no funcionó (no tuvo efecto):
class Import_Facebook_Events_Facebook_Ext extends Import_Facebook_Events_Facebook {
public function get_location( $facebook_event ) {
if ( !isset( $facebook_event->place->id ) ) {
$facebook_event->place->id = ''; //añadí esta línea
//return null;
}
//otro código aquí
}
new Import_Facebook_Events_Facebook_Ext();
¿Qué está mal aquí? ¿Cómo puedo lograr el efecto deseado?
La clase original Import_Facebook_Events_Facebook()
se instancia desde otra clase:
class Import_Facebook_Events{
private static $instance;
public static function instance() {
if( ! isset( self::$instance ) && ! (self::$instance instanceof Import_Facebook_Events ) ) {
self::$instance = new Import_Facebook_Events;
self::$instance->facebook = new Import_Facebook_Events_Facebook();
}
return self::$instance;
}
}
Y la clase anterior se instancia desde una función separada:
function run_import_facebook_events() {
return Import_Facebook_Events::instance();
}

Iurie
1.13K
Comentarios
Todas las respuestas a la pregunta
1
1
Finalmente, descubrí cómo resolver mi problema:
class Import_Facebook_Events_Facebook_Ext extends Import_Facebook_Events_Facebook {
function get_location( $facebook_event ) {
if ( !isset( $facebook_event->place->id ) ) {
$facebook_event->place->id = '';
//return null;
}
//otro código aquí
return $event_location;
}
}
$new_ife_events = run_import_facebook_events();
$new_ife_events->facebook = new Import_Facebook_Events_Facebook_Ext();
Una pregunta: ¿las últimas dos líneas de código deben incluirse en una función/acción?

Iurie
1.13K
18 oct 2017 13:07:52
Preguntas relacionadas
2
respuestas
2
respuestas