Почему мои шорткоды wordpress не работают при использовании шаблона плагина?

Я хотел бы добавить свои шорткоды из отдельного файла в свой плагин, созданный WP Plugin Boilerplate. У меня есть следующие коды:

в class-PLUGIN_NAME.php:

public function __construct() {
        if ( defined( 'PLUGIN_NAME_VERSION' ) ) {
            $this->version = PLUGIN_NAME_VERSION;
        } else {
            $this->version = '1.0.0';
        }
        $this->plugin_name = 'PLUGIN_NAME';

        $this->load_dependencies();
        $this->set_locale();
        $this->define_admin_hooks();
        $this->define_public_hooks();
        $this->define_shortcodes();

    }

private function define_shortcodes(){

    $shortcodes_class = new PLUGIN_NAME_Shortcodes( $this->get_plugin_name(), $this->get_version() );

    $this->loader->add_shortcode( 'event-create', $shortcodes_class, 'event_create' );

}

в class-PLUGIN-NAME-loader.php

protected $shortcodes;

public function add_shortcode( $tag, $component, $callback) {
    $this->shortcodes = $this->add( $this->shortcodes, $tag, $component, $callback );
}

public function run() {
    foreach ( $this->shortcodes as $hook ) {
        add_shortcode( $hook['hook'], array( $hook['component'], $hook['callback'] ) );
    }
}

И в class-PLUGIN_NAME-Shortcodes.php:

public static function event_create(){
    echo "Hello, world!";
}

Затем, когда я просматриваю страницу, содержащую тег [event-create], я получаю сообщение об ошибке do_shortcode_tag was called incorrectly. Attempting to parse a shortcode without a valid callback: event-create

Что я делаю неправильно?

Я не знаю шаблон плагина, но попробуйте заменить event_create на array($this, 'event_create'). И не делайте echo напрямую, вместо echo используйте return.

Alexis Vandepitte 10.04.2018 11:01

Это то, что делает функция add_shortcode в цикле foreach в методе run. И изменение эха на возврат тоже не помогло.

ShoeLace1291 11.04.2018 03:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
402
0

Другие вопросы по теме