如何在一个帖子上有两个古登堡编辑?

时间:2019-04-11 作者:user9664977

我目前处于进退两难的境地,我有一个设计,左边有一个边栏,占据了屏幕宽度的50%(这个边栏区域根据帖子自动提取数据,所以标题、日期、作者等),右边的内容占据了屏幕宽度的50%。

在正确的内容部分中the_content(); 这是抓住古腾堡编辑器中的所有内容和每一块。

我遇到的问题是,我希望添加到Gutenberg编辑器中的位于文章主要内容(标题和段落文本)下方的块可以扩展全宽,而不是停留在侧边栏旁主要内容的50%宽度。

在古腾堡之前,我通过the_content(); (这只是一个WYSIWYG编辑器),然后我会用ACF创建灵活的内容块,我可以根据我在主题中放置代码片段的位置来选择它们的位置。我现在正在使用ACF积木构建积木,这是用ACF构建的古腾堡式积木,它与the_content();. 这样做,我没有在我的主题文件的其他地方设置自定义块的选项。

因此,现在我正试图找到一个解决方案,如何使这项工作。其中一个想法是,是否有办法在帖子中添加一个古腾堡栏目编辑。因此,当用户创建帖子时,会给他们两个Gutenberg编辑器,每个编辑器都可以添加块,但我可以控制每个内容区域在我的主题文件中的位置(例如,我会使用默认设置the_content(); 默认Gutenberg块的代码段the_content_two(); 古腾堡二级编辑。

这是可能做到的吗?如果无法做到这一点,我是否可以采取其他方法来解决我的两难处境,即在侧边栏和内容下方有一个全宽块?

2 个回复
最合适的回答,由SO网友:majick 整理而成

您可以添加某种分隔符(分隔块?)在古腾堡,然后过滤the_content() 要检查分离器是否显示每一半,请在前一半上设置一个开关,然后在第二一半上检测:

add_filter(\'the_content\', \'content_splitter\');
function content_splitter($content) {
    $separator = "<!-- wp:core/separator";
    $pos = strpos($content, $separator);
    if ($pos !== false) {
        global $split_content;
        if (!isset($split_content) && $split_content) {
            $content = substr($content, 0, $pos);
            $split_content = true;
        } else {
            $part_b = substr($content, $pos, strlen($content));
            $pos = strpos($part_b, " -->") + 4;
            $content = substr($part_b, $pos, strlen($part_b));
        }
    }
    return $content;
}
因此,第一个内容位置将显示分隔符之前的所有内容,然后您可以调用the_content() 再次在第二个(全宽)位置,它将显示分隔符后的所有内容。

显然,使用这种方法,您需要确保内容中只有一个分隔符块,如果其他内容中有分隔符块,则会切断后半部分,因此您可能需要添加额外的条件来防止出现这种情况(检测帖子类型或页面?)

也就是说,通过更改代码中的分隔符字符串,任何其他块类型都可以用于类似的目的。(注意:我没有测试此代码或特定的分隔符字符串<!-- wp:core/separator, 这只是一个代码示例。)

SO网友:djboris

你想要的是不可能的——一篇文章有两个主要内容和两个古腾堡实例。

但是,既然您已经使用了ACF,为什么不添加一些flex内容字段而不是“第二个Gutenberg”?

Edit:

我想到了别的事情。如果您真的想在页面的其余部分使用Gutenberg,您可以创建一个自定义帖子类型,并将ACF关系字段添加到主帖子中,并带有指向第二篇帖子的链接。那么你可以用第一个the_content() 从主岗位和第二岗位the_content() 来自自定义帖子类型的引用帖子。如果我不够清楚,请告诉我。

相关推荐

WP_QUERY返回与GET_POSTS()不同的结果

因此,我有两段代码片段,试图获取当前页面的子页面。当前页面是“Sample”,下面的代码位于页面Sample中。php。第一个代码段使用get\\u posts()$args = array( \'post_parent\' => $post->ID, \'post_type\' => \'page\', \'post_status\' => \'any\'