Переопределение функции класса плагина
18 окт. 2017 г., 11:02:35
Просмотры: 17.8K
Голосов: 5
У меня похожая ситуация, как здесь.
В классе стороннего плагина есть функция, которую я хочу переопределить, расширив этот класс.
Исходная функция класса:
class Import_Facebook_Events_Facebook {
public function get_location( $facebook_event ) {
if ( !isset( $facebook_event->place->id ) ) {
return null;
}
//другой код здесь
}
Что я пробовал (но это не сработало - без эффекта):
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 = ''; //добавил эту строку
//return null;
}
//другой код здесь
}
new Import_Facebook_Events_Facebook_Ext();
В чем ошибка? Как добиться желаемого эффекта?
Оригинальный класс Import_Facebook_Events_Facebook()
создается в другом классе:
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;
}
}
И этот класс создается в отдельной функции:
function run_import_facebook_events() {
return Import_Facebook_Events::instance();
}

Iurie
1.13K
Комментарии
Все ответы на вопрос
1
1
Наконец-то я разобрался, как решить свою проблему:
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;
}
//другой код здесь
return $event_location;
}
}
$new_ife_events = run_import_facebook_events();
$new_ife_events->facebook = new Import_Facebook_Events_Facebook_Ext();
Вопрос: последние две строки кода должны быть включены в функцию/экшен?

Iurie
1.13K
18 окт. 2017 г. 13:07:52
Похожие вопросы
7
ответов
2
ответов