我的if语句正确吗?

时间:2015-10-28 作者:bas

基于this snippet, 检查购物车中的数量是否为最大值:

add_filter( \'woocommerce_quantity_input_args\', \'jk_woocommerce_quantity_input_args\', 10, 2 );
function jk_woocommerce_quantity_input_args( $args, $product ) {
    $args[\'max_value\'] = 10; // Maximum value
    return $args;
}
我试图添加一个条件,即如果项目onsale 等于的值SESSION 变量:

add_filter( \'woocommerce_quantity_input_args\', \'jk_woocommerce_quantity_input_args\', 10, 2 );
function jk_woocommerce_quantity_input_args( $args, $product ) { 
    $onsale = $product->is_on_sale();
    if ( ( $_SESSION[\'odertype\'] = \'local_delivery\' ) && $onsale ) {
        $args[\'max_value\'] = 10; // Maximum value
        return $args;
    }
}
不幸的是,它看起来像IF 语句不起作用,因为即使未设置会话变量,也会应用筛选器!

2 个回复
SO网友:Burgi

你的输入有误$_SESSION[\'odertype\'], 应该是$_SESSION[\'ordertype\']. 您还可以指定一个值,而不是对其进行测试equivalency, 尝试==.

如果有疑问,您可以随时使用var_dump($_SESSION) 获取存储在那里的所有值。

SO网友:TheDeadMedic

按照@Burgi的回答,正确的片段应该是:

function jk_woocommerce_quantity_input_args( $args, $product ) { 
    if (
        isset( $_SESSION[\'ordertype\'] ) && // Never assume an array index exists
        $_SESSION[\'ordertype\'] == \'local_delivery\' && // Note == "same as" operator, not = "assign"
        $product->is_on_sale()
    ) {
        $args[\'max_value\'] = 10; // Maximum value
    }

    // Always return args for other filters/sanity
    return $args;
}

相关推荐