WordPress:在子主题中覆盖父主题类功能

时间:2018-11-14 04:43:07

标签: wordpress wordpress-theming parent-child

我想覆盖子主题中的功能,该功能是在父主题的类内定义的。

这是示例代码:

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 :(得分:1)

您只需两个简单的步骤即可覆盖该类方法。

方法如下:

  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:它可以工作,但是我不确定这是否是最好的方法!