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

标签 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. 打开子主题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:它会起作用,但我不确定这是否是最好的方法!

关于WordPress:在子主题中覆盖父主题类功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53293310/

相关文章:

wordpress - WordPress 3.4 中页面模板消失了

css - 未应用子主题本地 CSS

oop - 最佳实践 : A child node's knowledge about its parent

java - Illegal IllegalStateException : The specified child already has a parent. 您必须首先在子级的父级上调用removeView()

php - max_allowed_pa​​cket 和文件上传问题

php - 将列添加到 WooCommerce 中的管理订单列表

php - 如何汇总 WooCommerce 购物车中添加的产品 ID 的额外费用

javascript - 在 wordpress 中找不到 jQuery 函数

html - 如何正确打破 CSS3 列?像素线在错误的列中

Java多态性-从父映射获取子命令