
从 2024 年 11 月 24 日发布第一个alpha.1版本开始,经过漫长的周期,我从一开始就在测试生成块 2.0(GB),最终版本于 2 月 12 日发布。
2.0 版是 "引擎盖 "下隐藏着巨大改进的版本之一,可保持网站的良好优化。2.0 版允许您保留1.0 版区块,甚至在需要时恢复到1.0 版区块。
虽然他们仍在对最终的性能和可用性进行微调,但这仍是他们未完成的工作,学习曲线也很陡峭,因为他们似乎还没有找到区块配置的 "视觉 "平衡,但无可挑剔的支持和非常完整的文档弥补了这一点。
汤姆-厄斯本制作的这个积木插件非常年轻。它只有两年多的历史。其 1.0 版本于 2022 年 8 月 30 日发布。
但这并不妨碍它与GeneratePress(GP) 一起成为设计和/或构建部分或几乎全部 WordPress 设计的理想组合,因为它提供了简洁、轻便和快速的代码。时至今日,从 "小众 "博客到家庭博客,仍有大量 WordPress 用户选择它。
我们必须坚持说,GenerateBlocks并不是像 Elementor 或其他所谓的 "建站工具"那样的建站工具,尽管它可以被用作建站工具,但它是一种不同的方法,与传统的 "拖放 "毫无关系。它是一个块插件。
如果说 GB+GP 有什么值得评论和称赞的地方,那就是他们的支持。他们非常了解用户,在客户服务方面一针见血。在他们的支持论坛上,您几乎可以解决任何问题。
他们甚至可以帮助您解决与使用错误或疑虑无关的问题,还可以帮助您建造或重新设计特定物品。他们的态度总是友好而坚决。最重要的是,即使不使用付费版本,任何人都可以咨询所有这些问题、讨论和解决方案。
仅这一点,就值得你为模板和区块插件支付的每一美元。
作为提醒和对未来的 "再咨询",我在这里留下一个解决方案的例子(这不是第一个),在你们的支持论坛中,我可以动态翻译一些字符串。这些字符串是最后要翻译的字符串,它们一直在抵制翻译。
很可能,对于有编程知识的人来说,这就像挠痒痒,但对于像我这样有基础知识的高级修补匠来说,这就是真正的礼物。
使用 Polylang 翻译 GenerateBlocks "文本 "块中的文本
Polylang 插件允许您 注册字符串,以便在任何地方添加相应的翻译。要做到这一点,只需像这样在主题的functions.php 中添加字符串即可:
pll_register_string('Publicado:', 'Published:');
pll_register_string('Actualizado:', 'Updated:');
因此,它们已经出现在语言/翻译下名为 Polylang 的翻译组中:

但这还不够,现在您必须用 PHP 代码调用每个翻译才能显示它们。
任务是将我当时添加到带有 GB 2.0 "文本 "块(以前称为 "标题")的GP 元素中的字符串Published:和Updated:动态翻译成每种语言。
Structure of the GB Text block
Publicado: {{post_date}} | Actualizado: {{post_date type:modified}} |

问题是我找不到添加 PHP Polylang 调用的方法,以根据页面显示的语言替换这两个词:
<?php echo pll__('Published:'); ?>
<?php echo pll__('Updated:'); ?>
GB 块不执行 PHP 代码,也无法用简码将其放入。此时,我宣布自己无法找到解决方案,并决定咨询支持论坛。
几条信息之后,解决方案就来了。
1.为 "文本 "块添加 CSS 类。在本例中,我们使用:my-post-dates

2-该过滤器添加在模板的functions.php中:
add_filter( 'render_block', function( $block_content, $block ) {
if ( ! empty( $block['attrs']['className'] ) && 'my-post-dates' === $block['attrs']['className'] ) {
$published = pll__('Published:');
$updated = pll__('Updated:');
// Ensure these values are translated, fallback to default if empty
$translated_published = !empty($published) ? $published : 'Published:';
$translated_updated = !empty($updated) ? $updated : 'Updated:';
$block_content = str_replace('Publicado', $published, $block_content);
$block_content = str_replace('Actualizado', $updated, $block_content);
}
return $block_content;
}, 10, 2 );
就是这样。现在,这两个单词将以您所选择的语言显示。
本帖包含两个联盟链接。