首页 > 解决方案 > 不在不同服务器上渲染块(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 / 编辑)

https://i.imgur.com/7wTbw1H.png(前端)

标签: phpwordpressadvanced-custom-fieldswordpress-gutenberg

解决方案


不知道你有没有解决问题。我使用本地,我有同样的问题。

我总是这样:

Timber::render( get_stylesheet_directory() . "/views/block-editor/content-{$slug}.twig", $context );

但这在某些服务器中不起作用(以及本地的新版本 5.x)

我现在使用的是:

Timber::render( "block-editor/content-{$slug}.twig", $context );

推荐阅读