Пользовательский блок WordPress не отображается в вставщике блоков

#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.