【问题标题】:WooCommerce hooks - How to pass variables such as $product in the hooked function?WooCommerce 挂钩 - 如何在挂钩函数中传递 $product 等变量?
【发布时间】:2023-04-05 04:44:01
【问题描述】:

我正在尝试了解如何在挂钩函数中传递 $product 等变量,如以下代码所示。

add_filter( 'woocommerce_product_single_add_to_cart_text', 'woocommerce_custom_single_add_to_cart_text', 9999, 2 ); 
function woocommerce_custom_single_add_to_cart_text($text, $product) {
  if ( is_product() ) {
    if ( 999 === $product->get_id() ) {
      $text = __( 'Donate', 'woocommerce' );
    }

 }
 return $text; 
}

我了解该功能的工作原理。 我不确定如何知道哪个变量可用于给定的钩子以及如何找出它。例如,我怎么知道在这个钩子中 $text$product 可以使用? 任何人都可以尝试澄清这个问题吗? 谢谢!

【问题讨论】:

    标签: php variables woocommerce hook hook-woocommerce


    【解决方案1】:

    使用全局 $product 对象

    // Change add to cart text on archives depending on product type
        add_filter( 'woocommerce_product_add_to_cart_text' , 'custom_woocommerce_product_add_to_cart_text' );
        function custom_woocommerce_product_add_to_cart_text() {
            global $product;
            
            $product_type = $product->product_type;
            
            switch ( $product_type ) {
    
                case 'simple':
                    return __( 'ADD!', 'woocommerce' );
                break;
                case 'variable':
                    return __( 'Select the variations, yo!', 'woocommerce' );
                break;
                default:
                    return __( 'Read more', 'woocommerce' );
            }
            
        }
    

    【讨论】:

    • 抱歉,在 woocommerce_product_add_to_cart_text hook 中,您的函数缺少 2 个参数:$button_text$product...所以不需要 global $product;
    • 好的,所以如果我理解的很好,我应该看看钩子的起源。如果我发现参数是通过钩子传递的,我可以使用它们,如果没有,那么我需要使用全局 $variable。正确的?谢谢!
    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 2021-02-13
    • 2020-08-15
    相关资源
    最近更新 更多