Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP嵌套函数逻辑错误-使用WPML翻译functions.PHP_Php_Wordpress_Woocommerce_Nested_Wpml - Fatal编程技术网

PHP嵌套函数逻辑错误-使用WPML翻译functions.PHP

PHP嵌套函数逻辑错误-使用WPML翻译functions.PHP,php,wordpress,woocommerce,nested,wpml,Php,Wordpress,Woocommerce,Nested,Wpml,我正在翻译一段显示在结帐页面上的文本,其中包含我正在使用的自定义代码。如何在PHP中正确使用嵌套函数 我将echo更改为WPML可识别函数,但在​前端 add_action( 'woocommerce_review_order_before_submit', 'bbloomer_checkout_add_on', 9999 ); function bbloomer_checkout_add_on() { $product_ids = array( 14877, 14879, 15493

我正在翻译一段显示在结帐页面上的文本,其中包含我正在使用的自定义代码。如何在PHP中正确使用嵌套函数

我将echo更改为WPML可识别函数,但在​前端

add_action( 'woocommerce_review_order_before_submit', 'bbloomer_checkout_add_on', 9999 );

function bbloomer_checkout_add_on() {
   $product_ids = array( 14877, 14879, 15493 );
   $in_cart = false;
   foreach( WC()->cart->get_cart() as $cart_item ) {
      $product_in_cart = $cart_item['product_id'];
      if ( in_array( $product_in_cart, $product_ids ) ) {
         $in_cart = true;
         break;
      }
   }
   if ( ! $in_cart ) {
      echo '<h4><b>● Would you like to add 10/20/30 small sample vials?</b></h4>';

      function change_sm_location_search_title( $original_value ) {
    return '<h4><b>' . __('● Would you like to add 10/20/30 small sample vials?','text-domain') . '</b></h4>';
}
add_filter( 'sm-location-search-title', 'change_sm_location_search_title' );

      echo '<p><a class="button" style="width: 140px" href="?add-to-cart=1183"> €1.2 (10) </a><a class="button" style="width: 140px" href="?add-to-cart=9945"> €2.1 (20)</a><a class="button" style="width: 140px" href="?add-to-cart=9948"> €3 (30)</a></p>';
   }
} 
add\u action('woocommerce\u review\u order\u before\u submit','bbloomer\u checkout\u add\u on',9999);
函数bbloomer\u checkout\u add\u on(){
$product_ids=阵列(148771487915493);
$in_cart=false;
foreach(WC()->cart->get_cart()作为$cart_项目){
$product_in_cart=$cart_item['product_id'];
if(在数组中($product\U在\U cart中,$product\U ID)){
$in_cart=true;
打破
}
}
如果(!$in_cart){
回声'● 是否要添加10/20/30小样本瓶?';
功能更改\u sm\u位置\u搜索\u标题(原始值){
返回“”。\uuuu('● 是否要添加10/20/30小样本瓶?',“文本域”);
}
添加过滤器(“sm位置搜索标题”,“更改sm位置搜索标题”);
回声“

”; } }

echo仍然显示在前端,但新的文本域函数仅显示在后端。

过滤器用于替换值。您应该将过滤器函数声明置于主函数之外,并使用apply_filters调用来使用过滤器

你也可以用动作钩代替。 我建议阅读关于使用挂钩和过滤器的内容:

为了更好地理解过滤器的工作原理,这里给出了以下答案:

这应该有效(未经测试)

add\u action('woocommerce\u review\u order\u before\u submit','bbloomer\u checkout\u add\u on',9999);
函数bbloomer\u checkout\u add\u on(){
$product_ids=阵列(148771487915493);
$in_cart=false;
foreach(WC()->cart->get_cart()作为$cart_项目){
$product_in_cart=$cart_item['product_id'];
if(在数组中($product\U在\U cart中,$product\U ID)){
$in_cart=true;
打破
}
}
如果(!$in_cart){
echo apply_过滤器('sm-location-search-title','是否要添加10/20/30小样本瓶?');
回声“

”; } } 功能更改\u sm\u位置\u搜索\u标题(原始值){ 返回“”。(原始值,'text-domain'); } 添加过滤器(“sm位置搜索标题”,“更改sm位置搜索标题”);
我还要补充一点,这不是嵌套函数的问题。非常感谢。我为错误的问题道歉。。。我被另一个人搞糊涂了。工作完美-干杯!
add_action( 'woocommerce_review_order_before_submit', 'bbloomer_checkout_add_on', 9999 );

    function bbloomer_checkout_add_on() {
       $product_ids = array( 14877, 14879, 15493 );
       $in_cart = false;
       foreach( WC()->cart->get_cart() as $cart_item ) {
          $product_in_cart = $cart_item['product_id'];
          if ( in_array( $product_in_cart, $product_ids ) ) {
             $in_cart = true;
             break;
          }
       }
       if ( ! $in_cart ) {
          echo apply_filters('sm-location-search-title', 'Would you like to add 10/20/30 small sample vials?');
          echo '<p><a class="button" style="width: 140px" href="?add-to-cart=1183"> €1.2 (10) </a><a class="button" style="width: 140px" href="?add-to-cart=9945"> €2.1 (20)</a><a class="button" style="width: 140px" href="?add-to-cart=9948"> €3 (30)</a></p>';
       }
    }   
    function change_sm_location_search_title( $original_value ) {
      return '<h4><b>' . __($original_value,'text-domain') . '</b></h4>';
    }  
    add_filter( 'sm-location-search-title', 'change_sm_location_search_title');