【问题标题】:Timber Gutenberg Block - dynamic callback functionTimber Gutenberg Block - 动态回调函数
【发布时间】:2019-05-29 19:03:26
【问题描述】:

我在我的 functions.php 中得到了这个,对于每个新块,我目前正在添加另一个单独的函数。

我不太确定如何使这个动态化,所以我只有一个函数。

functions.php

    function my_acf_block_render_callback( $block ) {
    $context = Timber::get_context();

    // Store block values.
    $context['block'] = $block;

    // Store field values.
    $context['fields'] = get_fields(); 

    // Render the block.
    Timber::render( 'block/bulma-card-block.twig', $context );
}

我得到了这些我注册为块的文件:

  • bulma-card-block.twig
  • bulma-tag-block.twig
  • bulma-other-block.twig
  • ...

    【问题讨论】:

    • 'block/bulma-card-block.twig'改成变量?
    • @DarkBee 我假设。对我来说,问题是,我不明白它是如何被调用的。所以我不确定如何传递要在函数中使用的变量。如果我这样做:'render_callback' => 'my_acf_tag_block_render_callback("bulma-card")', 据我所知,这是行不通的。
    • 我也尝试从块中获取名称,但它似乎不起作用。那将是最简单的解决方案。
    • 那你现在怎么调用函数呢?
    • 我只是在做这个'render_callback' => 'my_acf_tag_block_render_callback',

    标签: php wordpress twig timber wordpress-gutenberg


    【解决方案1】:

    根据描述 ACF 块功能的 blog post$block 变量包含 name 键下的块名称。

    这意味着您可以使用该名称来选择要动态呈现的 Twig 模板:

    function my_acf_block_render_callback( $block ) {
        $slug = str_replace( 'acf/', '', $block['name'] );
    
        $context = Timber::get_context();
    
        // Store block values.
        $context['block'] = $block;
    
        // Store field values.
        $context['fields'] = get_fields(); 
    
        // Render the block.
        Timber::render(
            'block/bulma-' . $slug . '-block.twig',
            $context
        );
    }
    

    【讨论】:

    • 我注意到我们必须过滤它。因为这会返回acf/bulma-card-block 。因此,就像在 Gutenberg Blocks 上的 ACF 文档中一样,我做了$slug = str_replace('acf/', '', $block['name']);,它终于奏效了。 (请包含在您的解决方案中)使用label 将是另一种解决方案。但我没有测试。
    • 我很高兴它成功了!你是对的!我刚刚更新了我的答案。
    • 我只是注意到只有这种情况,因为我使用的是 ACF。不确定返回值是什么,如果我使用的是普通的旧 PHP 风格,没有 ACF。
    猜你喜欢
    • 2023-02-16
    • 2018-03-17
    • 2023-04-02
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2020-06-28
    • 1970-01-01
    相关资源
    最近更新 更多