Intereting Posts
Как я могу остановить wp_update_post, испортив код примера HTML? Почему я получаю `вызов функции-члена has_posts () для не-объекта`? Нужна помощь в создании if-statement для настраиваемых мета-полей Настройки темы по умолчанию, странное поведение перед первым сохранением show / hide toggle для подстраниц в области администрирования wordpress Описание пользовательской таксономии WordPress для каждого сообщения? Как установить возможность добавления вопроса для роли автора в плагин wp pro quiz NextHen stylesheets ищет localhost Задачи WP-Cron запланированы, но не запущены Получение конкретной публикации WordPress REST API Нужно ли регистрировать мои собственные файлы .js и .css? добавить / apend шаблоны «прозрачно» через плагин к текущей активной теме или дочерней теме? Доставка Woocommerce на странице продукта Как отображать фильтры запросов WP? Как показать липкие сообщения на статической главной странице, которая также содержит контент?

Как работает plugins_loaded?

Я разрабатываю плагин для шлюза оплаты woocommerce.

Когда я помещаю код определения класса внутри функции обратного вызова, который запускается «plugins_loaded», он работает.

<?php add_action('plugins_loaded','WC_test_gateway_plugin'); function WC_test_gateway_plugin{ class my_gateway extends WC_Payment_Gateways{ //code } } ?> 

Но когда я помещу его в глобальную область, он покажет, что WC_Payment_Gateways не определен.

 <?php class my_gateway extends WC_Payment_Gateways{ //code } ?> 

В чем разница между этими двумя практиками?

Неплохо ли ставить определение класса внутри функции обратного вызова? Любой лучший способ для этого?

Solutions Collecting From Web of "Как работает plugins_loaded?"

Используйте определение класса в отдельном файле, например, в /your-plugin-dir/classes/my-gateway.php как обычно:

  <?php class my_gateway extends WC_Payment_Gateways { //code } ?> 

Затем используйте этот КОД, чтобы включить файл в действие plugins_loaded из основного файла плагина:

  add_action('plugins_loaded', 'WC_test_gateway_plugin'); function WC_test_gateway_plugin { require_once plugin_dir_path( __FILE__ ) . 'classes/my-gateway.php'; // instantiate your class here or in your class file or anywhere after this function is called. } 

Теперь вы получите доступ к WC_Payment_Gateways потому что теперь WC_Payment_Gateways определен, так как WordPress запускает plugin_loaded action только после того, как все плагины загрузили свои основные файлы.