WordPress: переопределить функцию класса родительской темы в дочерней теме
Я хочу переопределить функцию в дочерней теме, которая определена внутри класса в родительской теме.
Вот пример кода:
class A extends B{
function __construct(){
$this->add_ajax('sync_post_data', 'need_to_override');
}
//other functions
function need_to_override(){
//function code
}
}
Дополнительная информация:
Класс B расширяет класс C, а класс C является корневым классом, где add_ajax
определено.
Что я пробовал:
- Поскольку функция не является подключаемой, я не могу переопределить функцию непосредственно в дочерней теме.
Во-вторых, я попытался удалить действие ajax и добавить свое пользовательское действие. Выдает 500 внутренняя ошибка сервера.
remove_action( 'wp_ajax_sync_post_data', 'need_to_override' ); add_action( 'wp_ajax_sync_post_data', 'custom_function' ); function custom_function(){ //function code with my custom modification }
Любая помощь, пожалуйста...
1 ответ
Решение
Вы можете просто переопределить этот метод класса всего за два простых шага.
Вот как:
- Открытая детская тема
functions.php
Создайте новый класс, как это:
add_action( 'after_setup_theme', function() { class D extends A{ function need_to_override(){ //original function code with your custom modifications } } new D(); });
PS: это будет работать, но я не уверен, что это лучший способ или нет!