Я хотел бы добавить свои шорткоды из отдельного файла в свой плагин, созданный 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
Что я делаю неправильно?
Это то, что делает функция add_shortcode в цикле foreach в методе run. И изменение эха на возврат тоже не помогло.






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