Расширение темы PHP-класс в плагине

Я пытаюсь создать плагин, который позволяет мне распространяться на класс, определенный в определенной теме.

Тема имеет класс 'ET_Builder_Module'

В пределах темы существуют различные другие классы, которые расширяют это, например:

class ET_Builder_Module_Blurb extends ET_Builder_Module 

Я хотел бы добавить свои собственные классы для расширения темы, но я получаю следующую ошибку:

 Fatal error: Class 'ET_Builder_Module' not found 

Я использовал следующий код:

 class NOOU_ET_Builder_Test_Module extends ET_Builder_Module 

Я просто копировал и вставлял один из классов из темы и переименовал класс

Может ли кто-нибудь показать мне, как расширить класс из темы в плагине?

Solutions Collecting From Web of "Расширение темы PHP-класс в плагине"

Сделайте свой класс видимым для PHP после того, как тема объявила родительский класс.

Сначала загружаются плагины, тема может быть позже. Это можно переопределить.

Код темы доступен, когда действие after_setup_theme , поэтому вы можете использовать его следующим образом:

 add_action( 'after_setup_theme', function() { require 'ChildClass.php'; }); 

Однако, если тема загружает родительский класс позже, вы можете столкнуться с той же проблемой: вы не знаете, когда она действительно доступна.

Альтернативой является автозагрузчик : не загружайте классы заранее. Пусть PHP ждет, пока вы не создадите новый экземпляр класса, а затем пусть зарегистрированный автозагрузчик включит нужный файл.

Вот простой пример, который вы можете поместить в основной файл плагина. Убедитесь, что имя файла совпадает с именем класса, например. ET_Builder_Module_Blurb.php .

 spl_autoload_register( function( $name ) { $path = __DIR__ . "/$name.php"; if ( file_exists( $path ) ) require $path; });