覆盖插件类


Override a plugin class

我试图用我自己的插件类覆盖一个插件类。

插件类是

  function yith_woocompare_constructor() {
           // stuff here
 }
add_action( 'plugins_loaded', 'yith_woocompare_constructor' );

在我的functions。php中我尝试这样做

     remove_action( 'plugins_loaded', 'yith_woocompare_constructor', 0 );   
// now add your own filter
add_action( 'plugins_loaded', 'new_yith_woocompare_constructor', 0 );
   function new_yith_woocompare_constructor()
    { 
      // my stuff here 
     }

但是它似乎不工作,我做错了什么?

默认优先级为10,但您使用的是0。在你的版本中,你实际上并没有删除动作。

也取决于你的插件加载的点,它无论如何都不会工作。

试试这个

function wpse_plugins_loaded() {
    remove_action( 'plugins_loaded', 'yith_woocompare_constructor' );   
    add_action( 'plugins_loaded', 'new_yith_woocompare_constructor' );
}
add_action( 'plugins_loaded', 'wpse_plugins_loaded', 5 );
function new_yith_woocompare_constructor() {
}

在这个例子中,我们等待所有的插件加载以移除'yith_woocompare_constructor'动作。我们在优先级为5的插件上调用remove_action。这意味着操作将在运行之前(在10上)被删除,然后用自定义函数替换它。

你可以通过mu插件来实现。

创建目录

mu-plugins并行于plugins文件夹并在文件夹中创建文件wp-plugin- extension .php,如果你的插件名是wp-plugin.php然后输入代码

function yith_woocompare_constructor() {
           // stuff here
 }
add_action( 'plugins_loaded', 'yith_woocompare_constructor' );