首页 > 解决方案 > Wordpress Woo Minicart 插件,带有针对不同语言的购物车字符串和购物车页面链接的 Polylang 问题

问题描述

我正在尝试使用 Polylang 的 pll_current_language() 为不同语言更改 Woo Minicart 插件https://wordpress.org/support/plugin/woo-minicart/中的字符串值,但我在使用 Polylang 和Woo Minicart 插件。我会附上一个视频,因为字符串会改变一秒钟,然后再回到另一种语言。此外,不同语言的购物车页面的不同链接也不会改变。这是它在前端的外观:https ://www.youtube.com/watch?v=tYFX34ARhF0&feature=youtu.be 我只想根据两种不同的语言更改字符串和链接,请帮忙。这是我放入 wmc-default-fragment.php 和 wmc-default-template.php 的代码:

    <div class="wmc-bottom-buttons">
        <?php if(pll_current_language() == 'en'){ 
        echo '<a href="https://testb.com/en/cart/">'; }?>
                <?php if(pll_current_language() == 'bg'){ 
        echo '<a href="https://testb.com/количка/">'; }?>
        
        <?php if(pll_current_language() == 'bg'){ _e( 'Количка', 'woo-minicart' );} else if(pll_current_language() == 'en'){_e( 'Cart', 'woo-minicart' ); }?></a>
            <a href="<?php echo wc_get_checkout_url(); ?>"><?php _e( 'Поръчка', 'woo-minicart' ) ?></a>
        </div>

请帮我

标签: phpwordpresspolylang

解决方案


在简要查看 Polylang 文档后,我发现了“pll_language_defined”,它在所有其他函数之后执行。看这里:https ://polylang.pro/doc/developpers-how-to/

Polylang 什么时候加载语言?有两种情况: 从内容中设置语言: Polylang 需要延迟语言加载,并在与优先级为 5 的操作 'wp' 操作挂钩的函数中执行此操作。语言代码添加到所有 url(默认):无需推迟语言加载,就像 Polylang 未激活一样。由于第一种情况,插件作者不应该在 'wp' 动作被触发之前尝试翻译字符串。Polylang 提供了一个新的动作“pll_language_defined”,一旦定义了语言就会被触发。它适用于用户选择的任何选项来设置语言。

我使用了 pll_language_defined,我在里面添加了一个动作。

   <?php  
    function action_pll_language_defined() {
  if(pll_current_language() == 'bg'){ _e( 'Поръчка', 'woo-minicart' );} else 
  if(pll_current_language() == 'en') { _e( 'Checkout', 'woo-minicart' ); } 
                
                
                }
                
                
                add_action('pll_language_defined', 'action_pll_language_defined', 10, 2);
                 do_action('pll_language_defined');
                ?>

然后一切正常,它们正在正确更改。在那之后,我遇到了一些问题,产品被随机添加到购物车等。这是插件 WP Fastest Cache 的问题。如果您遇到这个问题,请确保您没有为购物车页面启用缓存,我禁用了插件,一切都很好,一切都以正确的方式翻译,现在可以工作了。


推荐阅读