#javascript #php #wordpress #wordpress-gutenberg
#язык JavaScript #php #wordpress #wordpress-gutenberg
Вопрос:
Я пытаюсь создать пользовательский блок для сайта, но блок не отображается в диалоге редактора. Я прошел через несколько учебных пособий и много раз менял свой код, но это просто не сработает.
Что я проверил:
- Блок добавляется с помощью плагина, но он также не работает при перемещении в тему.
- Я знаю, что плагин работает правильно, так как я могу использовать другие крючки/действия wp без проблем внутри плагина.
- Я пробовал использовать как ‘init’, так и ‘enqueue_block_assets’, но ни один из них не работает.
- Я проверил, что все расположения файлов и пути верны, поскольку я повторил их, чтобы проверить.
- Я перешел на тему по умолчанию, но она по-прежнему не отображается.
Любая помощь будет признательна.
Вот src блока js (который скомпилирован):
import { registerBlockType } from '@wordpress/blocks' registerBlockType('ghs/landing-page-block', { title: 'Landing Page', apiVersion: 2, category: 'design', icon: 'smiley', description: 'Layout for the GHS landing page', keywords: ['GHS', 'landing', 'page', 'front'], edit: () =gt; { return (lt;divgt;hellolt;/divgt;) }, save: () =gt; { return (lt;divgt;hellolt;/divgt;) } });
и php регистрирует его:
add_action('init', function() { $asset_file = include( WP_PLUGIN_DIR . '/ghs-custom-blocks/assets/js/landing-page-block.asset.php'); wp_register_script('ghs-landing-page', WP_PLUGIN_DIR . '/ghs-custom-blocks/assets/js/landing-page-block.js', $asset_file['dependencies'], $asset_file['version']); register_block_type('ghs/landing-page-block', [ 'api_version' =gt; 2, 'editor_script' =gt; 'ghs-landing-page', ]); });
Ответ №1:
Решил это, потому что я использовал WP_PLUGIN_DIR
вместо plugin_dir_url(__FILE__)
. Это означало, что URL-адрес запроса js был из корневого каталога, а не из установки wp.