在类中使用筛选器和挂钩

时间:2020-01-11 作者:sialfa

我将深入使用oop来创建wordpress插件。我发现了一个有趣的article 关于钩子以及如何在类中使用它们。阅读后,我有一些疑问:在构造函数中使用挂钩是正确的,还是使用方法而不是构造函数更好?在类中定义过滤器或挂钩的最佳实践是什么?

2 个回复
SO网友:Jacob Peattie

不,构造函数不应该定义挂钩。

应该使用构造函数来设置对象的初始状态。钩子与对象的初始状态无关,因此它们不属于构造函数。构造函数不应该有“副作用”,以便使用new ClassName() 不会影响程序的任何其他部分,这就是注册挂钩的作用。

对这个问题的一个很好的概述是this article 作者:汤姆·麦克法兰。它还提供了另一种选择。

SO网友:Younes.D

这取决于你想做什么。例如,假设您的插件需要javascript才能工作。在这种情况下,我们可以将javascript排队到类的构造函数中:

class My_Plugin{

     function __construct (){

         add_action( \'wp_enqueue_scripts\', array( $this , \'my_script\' ) );

     }

     function my_script(){

        // here you use the wp_enqueue_script(  );
     }

}