php - 不在不同服务器上渲染块(ACF + Gutenberg + Timber)
问题描述
我有块渲染的问题。
我使用连接:ACF + Timber + Gutenberg。
在 localhost 上创建块不是问题,所有内容都显示在 wp-admin 端和前端端(在 Linux、PHP 7.219、nginx 上创建)
在 Windows + 最新的 XAMPP (PHP 7.39, apache) 上安装测试后,结果发现这些块没有呈现(在 wp-admin 和前端站点上都看不到它们)。
这就是为什么我把它放在 Raspberri Pi (PHP 7.120, apache) 上并且它正常启动的原因。我想这可能是 Windows 和一些服务器设置的问题。但是,当安装在普通的 Web 服务器(Linux、PHP 7.0.33、apache)上时也无法正常工作。
有谁知道块没有被渲染的原因是什么?
在下面的函数中根本不输入回调(text_block_render_callback),但是注册块有效。
add_action('acf/init', 'register_block_text');
function register_block_text() {
acf_register_block(array(
'name' => 'text',
'title' => ('Tekst', 'ABC'),
'description' => ('Moduł zwykłego tekstu', 'ABC'),
'render_callback' => 'text_block_render_callback',
'category' => 'test-blocks',
'icon' => 'edit',
'keywords' => array('blog'),
'mode' => 'edit',
'enqueue_assets' => function() {
wp_enqueue_style( 'block-text', get_stylesheet_directory_uri() . '/dist/blocks/text/text.css');
}
));
}
function text_block_render_callback($block, $content = '', $is_preview = false)
{
$context = Timber::context();
$context['block'] = $block;
$context['fields'] = get_fields();
$context['is_preview'] = $is_preview;
Timber::render(TEMPLATEPATH . '/views/blocks/text/text.twig', $context);
}
工作 - 相同的代码
https://i.imgur.com/lPpMgsj.png (wp-admin)
https://i.imgur.com/enq6OKA.png(前端)
不工作 - 相同的代码
https://i.imgur.com/RoccMVk.png (wp-admin/view)
https://i.imgur.com/qOf1had.png (wp-admin / 编辑)
解决方案
不知道你有没有解决问题。我使用本地,我有同样的问题。
我总是这样:
Timber::render( get_stylesheet_directory() . "/views/block-editor/content-{$slug}.twig", $context );
但这在某些服务器中不起作用(以及本地的新版本 5.x)
我现在使用的是:
Timber::render( "block-editor/content-{$slug}.twig", $context );
推荐阅读
- sql - 同一记录sql中的多个值
- android - 在 Android 上的 Chrome 中禁用本机延迟加载图像
- routes - Symfony 4 路线
- ruby-on-rails - 如何在 Rails 上读取 epub 文件?
- chromium - yubikey 不能与 qutebrowser 一起使用
- python - 显示特定学生以各自价格购买的水果
- android - 无需清单权限即可打开呼叫意图和短信意图
- ionic-framework - 在离子菜单中设置动态项目
- c - 删除使用 __attribute__((section)) 创建的部分
- reactjs - 序列化数据以响应提交发布请求