【问题标题】:Wordpress custom GutenBerg block not showing in inserter dialogWordpress 自定义 GutenBerg 块未显示在插入器对话框中
【发布时间】:2021-05-26 11:52:21
【问题描述】:

所以,我正在为 WordPress 中的 woo-commerce 开发一个插件,现在正在尝试构建一个小部件。 我已经成功构建了一个可以在商店中显示的自定义小部件(在外观 > 小部件下)。 现在我想构建一个自定义 Gutenberg Block 以在页面编辑器中使用。 现在的问题是,即使是一个简单的示例似乎也没有加载,但任何地方也没有一条错误消息,所以我对如何继续一无所知。

我使用了来自 WordPress 文档本身的示例,正​​如他们所说,对于这个简单的示例,应该在 '插入器对话框' 中初始化块。

我的代码是>

block.jsx(使用的文件由webpack编译,加载并显示控制台日志):

import { registerBlockType } from '@wordpress/blocks';
import { useBlockProps } from '@wordpress/block-editor';

const blockStyle = {
    backgroundColor: '#900',
    color: '#fff',
    padding: '20px',
};
 console.log("test1");
registerBlockType('gutenberg-examples/example-01-basic-esnext', {
    apiVersion: 2,
    title: 'Example: Basic (esnext)',
    icon: 'universal-access-alt',
    category: 'design',
    example: {},
    edit() {
        const blockProps = useBlockProps( { style: blockStyle } );
        return <div {...blockProps}>Hello World, step 1 (from the editor).</div>;
    },
    save() {
        const blockProps = useBlockProps.save( { style: blockStyle } );
        return <div {...blockProps}>Hello World, step 1 (from the front-end).</div>;
    },
} );

blockload.php(测试了添加操作(“init”)但似乎也没有做太多:

<?php
// if (! defined( "ABSPATH")){
//     exit;
// };

function gutenberg_examples_01_register_block() {
 
 // automatically load dependencies and version
//  $asset_file = include( plugin_dir_path( __FILE__ ) . 'build/index.asset.php');
$asset_file = array('dependencies' => array('wp-element', 'wp-polyfill'), 'version' => 'fc93c4a9675c108725227db345898bcc');

 wp_register_script(
     'gutenberg-examples-01-esnext',
     plugins_url('wocom_bl/resources/Scripts/bundles/editpage/editpage.bundle.js'),
    //  plugins_url( 'build/index.js', __FILE__ ),
     $asset_file['dependencies'],
     $asset_file['version']
 );

 register_block_type( 'gutenberg-examples/example-01-basic-esnext', array(
     'editor_script' => 'gutenberg-examples-01-esnext',
 ) );

}
// add_action( 'init', 'gutenberg_examples_01_register_block' );
add_action('enqueue_block_assets', 'gutenberg_examples_01_register_block');

以及启动一切的主插件文件调用:

if ( wcmbl_isWooCommerceActivated() ) {
    require_once __DIR__ . '/includes/settings.php';
    require_once __DIR__ . '/includes/products/producttab.php';
    // require_once __DIR__ . '/includes/page/register_widgets.php';
     require_once __DIR__ . '/includes/page/blocks/blockload.php';
}

因此,blockload.php 中的任何语法错误都会引发错误。 正如我现在发布的那样,一切正常,任何地方都没有错误(wp_bugging,true) 但是插入器对话框的设计类别下也没有额外的块?

那么我现在从哪里开始找到罪魁祸首呢?

编辑**

所以,基本上我不知道最初的 js 出了什么问题,因为它来自 dev.wordpress 上的示例。

我采用了一种稍微不同的方法,即 js 如何返回内容,但它确实有效。 遵循此示例(edit2 >> tho this 使用了我现在看到的已弃用的函数,因此不应该使用,但得到了一些工作,因此其余部分超出了此问题的范围): https://themes.artbees.net/blog/create-a-custom-block-for-wordpress-gutenberg/

所以问题结束了!

【问题讨论】:

  • 我刚刚检查了我的正常设置情况,而且我的依赖项数组 (PHP) 中有 wp-blockswp-block-editor,我使用 init 挂钩来注册块而不是 @ 987654328@。也许......您在进行更改后是否重新激活了插件?
  • 尝试了你的建议,但仍然没有来自前端的任何响应。另外,这是我应该做的事情吗?我已经为 woocommerce 设置、编辑产品设置、插件选项卡等构建了东西,而不是一次我需要重新激活我的插件?

标签: javascript php wordpress wordpress-gutenberg


【解决方案1】:

请使用create-guten-block dev-toolkit 进行gutenberg 块开发。

希望对你有帮助。

【讨论】:

  • 这似乎生成了一个全新的插件?我宁愿有一个解决方案,其中我创建的块是我目前正在开发的插件的一部分
猜你喜欢
  • 2022-01-08
  • 2019-05-18
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 2021-04-11
相关资源
最近更新 更多