wordpress或woocommerce中的全局变量

时间:2014-08-17 19:58:03

标签: php wordpress woocommerce

public function action_save_post($post_id) {
    global $wpdb;       

        $wooqty = $_POST['qty'];
        if( !empty( $wooqty ) )
        update_post_meta( $post_id, 'qty', esc_attr( $wooqty ) );

        } 

这将保存wordpess中Metabox中Form表单字段中的数据。我想使用这个变量$ wooqty,它具有另一个函数的值。

public function action_woocommerce_add_order_item_meta($item_id, $values) {
    global $wpdb;



    $product_no = (int) $values['product_id'];
    $qty_no = (int) $values['quantity'];
}

我想将变量$ qty_no数据替换为$ wooqty。我的问题是如何将变量$wooqty传递给此函数,以便我可以替换$qty_no的值。

2 个答案:

答案 0 :(得分:0)

对我来说似乎很简单。您不需要设置全局,因为它已经在Wordpress中发布了元数据。只需在函数中调用get_post_meta($product_no, 'qty', TRUE);即可。

所以,你的新功能将如下所示:

public function action_woocommerce_add_order_item_meta($item_id, $values) {
    global $wpdb;

    $product_no = (int) $values['product_id'];
    $qty_no = get_post_meta($product_no, 'qty', TRUE);
}

不确定为什么要全局化$wpdb,因为该函数不使用该变量执行任何数据库操作。您也可以删除函数顶部的global $wpdb;定义。

此外,我会检查$item_id变量并查看它是否等于$values['product_id'],如果是,请使用该变量而不是从$values数组中重新获取产品ID。< / p>

希望我帮助,如果你的问题不清楚的话。问题看起来有点旧,所以你可能已经弄明白了。但万一你还没有。

答案 1 :(得分:0)

因此您可以使用以下语法在函数中设置全局,然后在PHP中的其他位置访问它。

    function foo(){
      $GLOBALS['foobar'] = 'somestring';
    }
    function bar(){
      echo $GLOBALS['foobar'];
    }
    foo();
    bar();

然而,它通常不是一个好主意,并且可能有更好的方法将变量传递给函数。第三个函数如何在本地设置变量,例如在函数1和2中调用。