我将headless使用 WordPress 作为我的 CMS 进行设置。为此,我使用了以下 WordPress 插件:
Advanced Custom Fields PRO- 使用专业版以获得blocks选项WP GraphiQLWP GraphQLWPGraphQL 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 Nameblock_hero
现在,我创建了一个名为的页面homepage,在该页面中,我添加了Hero块并给文本字段一个值。
然后,在 中GraphiQL IDE,当我查看可用选项时,pages我没有看到任何与hero. 即使我在架构中搜索“英雄”,也不会出现任何内容。
WPGraphQL不适用于自定义古腾堡块?