【问题标题】:Error on redeclaring function on WooCommerce在 WooCommerce 上重新声明功能时出错
【发布时间】:2021-05-31 01:43:15
【问题描述】:

在 WooCommerce 中,我在设置自定义库存状态时使用以下功能隐藏购物车按钮:

    //display the custom stock status on the pages
    add_action( 'woocommerce_after_shop_loop_item_title', 'wcs_stock_text_shop_page', 25 );
    //create our function
    function wcs_stock_text_shop_page() {
        //returns an array with 2 items availability and class for CSS
        global $product;

        $availability = $product->get_stock_status();
        
         if ( $product->get_stock_status() === 'noproduzione') {
            echo '<span style="color:#b20000;">Fuori produzione!</span>';
//hide purchase button if in "noproduzione"
add_filter('woocommerce_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
add_filter('woocommerce_variation_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
function filter_is_purchasable_callback( $purchasable, $product ) {
    if ( $product->get_stock_status() === 'noproduzione' ) { 
        return false;
    }

    return $purchasable;
}
         }
    else if ( $product->get_stock_status() === 'onbackorder') {
        echo '<span style="color:#13b200;">Disponibile su ordinazione</span>';
         }
    else if ( $product->get_stock_status() === '10days') {
        echo '<span style="color:#13b200;">Disponibile in 10 giorni</span>';
         }
    else if ( $product->get_stock_status() === 'inarrivo') {
        echo '<span style="color:#e0c81d;">In arrivo</span>';
         }
    
    else if ( $product->get_stock_status() === 'outofstock') {
        echo '<span style="color:#b20000;">Terminato!</span>';
         }
    else echo '<span style="color:#53af00;">Disponibile!</span>';
 
}

但是当我尝试编辑主页时收到错误消息:

致命错误:
无法重新声明 filter_is_purchasable_callback()(之前在 functions.php 中声明)”。

如何解决?

【问题讨论】:

    标签: php wordpress function woocommerce hook-woocommerce


    【解决方案1】:

    您已在wcs_stock_text_shop_page() 函数内插入以下现有代码:

    //hide purchase button if in "noproduzione"
    add_filter('woocommerce_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
    add_filter('woocommerce_variation_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
    function filter_is_purchasable_callback( $purchasable, $product ) {
        if ( $product->get_stock_status() === 'noproduzione' ) { 
            return false;
        }
    
        return $purchasable;
    }
    

    所以包含函数filter_is_purchasable_callback()的代码块存在两次。

    your previous original question code

    所以你的相关代码应该是:

    //display the custom stock status on the pages
    add_action( 'woocommerce_after_shop_loop_item_title', 'wcs_stock_text_shop_page', 25 );
    //create our function
    function wcs_stock_text_shop_page() {
        //returns an array with 2 items availability and class for CSS
        global $product;
    
        $availability = $product->get_stock_status();
        
         if ( $product->get_stock_status() === 'noproduzione') {
            echo '<span style="color:#b20000;">Fuori produzione!</span>';
    
         }
        else if ( $product->get_stock_status() === 'onbackorder') {
            echo '<span style="color:#13b200;">Disponibile su ordinazione</span>';
             }
        else if ( $product->get_stock_status() === '10days') {
            echo '<span style="color:#13b200;">Disponibile in 10 giorni</span>';
             }
        else if ( $product->get_stock_status() === 'inarrivo') {
            echo '<span style="color:#e0c81d;">In arrivo</span>';
             }
        
        else if ( $product->get_stock_status() === 'outofstock') {
            echo '<span style="color:#b20000;">Terminato!</span>';
             }
        else echo '<span style="color:#53af00;">Disponibile!</span>';
     
    }
    
    //hide purchase button if in "noproduzione"
    add_filter('woocommerce_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
    add_filter('woocommerce_variation_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
    function filter_is_purchasable_callback( $purchasable, $product ) {
        if ( $product->get_stock_status() === 'noproduzione' ) { 
            return false;
        }
    
        return $purchasable;
    }
    

    检查您是否只拥有此代码块一次:

    //hide purchase button if in "noproduzione"
    add_filter('woocommerce_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
    add_filter('woocommerce_variation_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
    function filter_is_purchasable_callback( $purchasable, $product ) {
        if ( $product->get_stock_status() === 'noproduzione' ) { 
            return false;
        }
    
        return $purchasable;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2017-03-27
      • 2013-02-25
      相关资源
      最近更新 更多