我将headless
使用 WordPress 作为我的 CMS 进行设置。为此,我使用了以下 WordPress 插件:
Advanced Custom Fields PRO
- 使用专业版以获得blocks
选项WP GraphiQL
WP GraphQL
WPGraphQL for Advanced Custom Fields
- 使 ACF 字段出现在架构中
现在,我创建了自定义 ACF Gutenberg 块以实现两件事:
- 视觉上更干净的后端
- 更容易创建页面(不需要添加到
ACF
组,只需在后端拖放模块即可)
以下是我创建hero
块 ( acf-blocks/blocks.php
) 的方式:
$hero = array(
'name' => 'hero',
'title' => __('Hero'),
'description' => __('Add hero section'),
'render_callback' => 'block_render',
'category' => 'formatting',
'icon' => $icon,
'mode' => 'edit',
'category' => 'custom',
'post_types' => array('page','post'),
'keywords' => array( 'hero' )
);
$blocks = [
$hero
];
return $blocks;
这是我注册它的方式(acf-blocks/function.php
):
function block_acf_init(){
$path = get_template_directory().'/inc/acf-blocks/blocks.php';
$blocks = require($path);
foreach($blocks as $block) {
acf_register_block_type($block);
}
}
if( function_exists('acf_register_block_type') ) {
add_action('acf/init', 'block_acf_init');
}
在ACF
插件中,我创建了一个名为hero
. hero
具有单个text
字段并且具有“如果块等于英雄则显示此字段组”的规则。
注意:我已经在字段中Show in GraphQL
启用了。GraphQL Field Name
block_hero
现在,我创建了一个名为的页面homepage
,在该页面中,我添加了Hero
块并给文本字段一个值。
然后,在 中GraphiQL IDE
,当我查看可用选项时,pages
我没有看到任何与hero
. 即使我在架构中搜索“英雄”,也不会出现任何内容。
WPGraphQL
不适用于自定义古腾堡块?