在第一个块之后添加页面标题

时间:2021-10-22 作者:Sam

我正在构建一个使用本机和自定义ACF块的主题。

在我的默认页面顶部。php模板,我有以下内容:

<?php
if ( has_post_thumbnail() ) {
    the_post_thumbnail();
}
?>

<header class="entry-header">
    <?php the_title( \'<h1 class="entry-title">\', \'</h1>\' ); ?>
</header>

<?php the_content(); ?>
如果上传了一幅特色图片,页面标题就会很好地位于下方。

但是,如果没有上传特色图像,并且添加了封面块(例如),则页面标题显然位于该块的顶部。

如果没有上传特色图片,我是否可以使用一个条件始终在添加的第一个块下插入页面标题?

1 个回复
SO网友:Kalimah

我唯一能想到的就是[parse_block()][1][render_block()][1]

parse\\u block将html块解析为数组,render\\u block将数组转换为内容。

以下是如何使用上述函数(未测试的代码)实现所需功能的示例:

<?php
if (has_post_thumbnail()) {
    the_post_thumbnail();
}
?>

<?php
if (has_post_thumbnail()) {
?>
   <header class="entry-header">
        <?php
            the_title(\'<h1 class="entry-title">\', \'</h1>\');
        ?>
   </header>
<?php
}
?>

<?php
$renderd_content = "";
$parsed_blocks   = parse_blocks($post->content);
foreach ($parse_blocks as $block_index => $block_attr) {
    if ($block_index === 1 && !has_post_thumbnail()) {
        $renderd_content .= the_title(\'<h1 class="entry-title">\', \'</h1>\', false);
    }
    $renderd_content .= render_block($block_attr);
}

echo $renderd_content;
?>
这里有一个链接,提供了更多的例子,并讨论了ACF。https://www.billerickson.net/access-gutenberg-block-data/#acf-block-data

相关推荐