我也面临着同样的问题,在我的情况下,导致我这个问题的问题和往常一样愚蠢。
对于那些面临类似问题的人,请检查acf_register_block_type
功能:
acf_register_block_type( array(
\'name\' => \'theme-block-jobbz\',
\'title\' => __( \'Title\', \'client\' ),
\'enqueue_style\' => \'template-parts/blocks/block_jobBz/block.css\',
\'render_template\' => \'template-parts/blocks/block_jobBz/block.php\',
\'category\' => \'Category\',
\'icon\' => \'html\',
\'mode\' => \'preview\',
\'keywords\' => array(\'keyword\'),
));
注意你的身体
render_template
路径,请尝试使其与上面代码段中显示的相对。而不是像这样:
\'render_template\' => get_template_directory_uri() . \'/template-parts/blocks/block_jobBz/block.php\',
或者,您可以使用\'render_callback\' => \'render_test\',
, 并在其他地方声明函数:
function render_test() { ?>
<div></div>
<?php }
请记住,您可以使用
ACF 还将应用和样式表中的函数。
在页面模板或其他地方,the_content()
应该可以轻松地输出页面的内容,包括所有块。此外,您还可以尝试以下操作:
$blocks = parse_blocks( $post->post_content );
foreach( $blocks as $block ) {
echo render_block( $block );
}
如果您正在使用
render_template
, 同时仔细检查您的
php 文件:
<?php
/**
* Random Block Template.
*
* @param array $block The block settings and attributes.
* @param string $content The block inner HTML (empty).
* @param bool $is_preview True during AJAX preview.
* @param (int|string) $post_id The post ID this block is saved to.
*/
?>
<div>Content</div>
我不确定它是否完全解决了您的问题,但可能对将来面临这一问题的其他人有所帮助。