Перехватчик действий с $ this внутри класса в Wordpress - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь создать ловушку на основе display_attached_media внутри класса Sensei_Media_Attachments в плагине Sensei LMS Media Attachments , чтобы активировать его в произвольном месте, используя в моих функциях. 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 );
} }

При использовании внутри класса он работал нормально, но я не хочу редактировать файлы плагина.

Обновление

Когда я последовал предложению @disin для Uncaught Error: Using $this when not in object context, изменился с функций. php на class-sensei-media -attachments. php. php в строке 226, поэтому я провел небольшое исследование и нашел проблему. Внутри функции display_attached_media у меня есть вызов, основанный на $this, поэтому я заменил его на self::, и все работало хорошо.

Но кто-нибудь знает, есть ли у нас другой, чтобы исправить это, вместо этого замените плагин код?

1 Ответ

0 голосов
/ 13 июля 2020

Вы не можете использовать $ this вне класса. Пожалуйста, вызовите действие как

add_action( 'custom_action', 'display_attached_media', 35 );

в функциях вашей темы. php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...