wordpress - 在 Wordpress 的类中使用 $this 进行操作挂钩
问题描述
我正在尝试在插件Sensei LMS 媒体附件中的类 Sensei_Media_Attachments 中创建一个基于 'display_attached_media' 的钩子,以便在我的 functions.php 中使用的自定义位置激活它:
add_action( 'custom_action', array( $this, 'display_attached_media' ), 35 );
但我收到以下错误:
致命错误:未捕获的错误:不在对象上下文中使用 $this
插件示例:
class Sensei_Media_Attachments {
private static $instance = null;
private $assets_dir;
private $assets_url;
private $token;
public function frontend_hooks() {
// Media files display.
add_action( 'sensei_single_lesson_content_inside_after', array( $this, 'display_attached_media' ), 35 );
add_action( 'sensei_single_course_content_inside_before', array( $this, 'display_attached_media' ), 35 );
} }
在课堂上使用时,它运行良好,但我不想编辑插件文件。
更新
当我按照@disinfor 的建议在第 226 行Uncaught Error: Using $this when not in object context
从functions.php更改为class-sensei-media-attachments.php.php时,我进行了一些研究并发现了问题。在函数 display_attached_media 内部,我有一个基于 的调用$this
,因此我将其替换为self::
并且一切正常。
但是,有谁知道我们是否有另一个来修复它,而不是更改插件代码?
解决方案
您不能在课堂外使用 $this。请将动作称为
add_action( 'custom_action', 'display_attached_media', 35 );
在你主题的functions.php中