WordPress: переопределить функцию класса родительской темы в дочерней теме - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу переопределить функцию в дочерней теме, которая определена внутри класса в родительской теме.

Вот пример кода:

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.

Что я пробовал:

  1. Поскольку функция не является подключаемой, я не могу переопределить функцию непосредственно в дочерней теме.
  2. Во-вторых, я попытался удалить действие 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 Ответ

0 голосов
/ 16 ноября 2018

Вы можете просто переопределить этот метод класса всего за два простых шага.

Вот как:

  1. Открытая дочерняя тема functions.php
  2. Создайте новый класс, как этот:

    add_action( 'after_setup_theme', function() {
    
    
       class D extends A{
    
          function need_to_override(){
             //original function code with your custom modifications
          }
    
       }
    
       new D();
    });
    

PS: это будет работать, но я не уверен, что это лучший способ или нет!

...