wordpress 或 woocommerce 中的全局变量

问题描述 投票:0回答:2
public function action_save_post($post_id) {
    global $wpdb;       

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

        } 

这会将 Metabox 中表单字段的数据保存在 wordpess 中。我想使用这个变量 $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
的值。

php wordpress woocommerce
2个回答
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。

希望我能帮助你,如果你的问题没有更清楚的话。问题似乎有点老了,所以你现在可能已经弄清楚了。但以防万一你还没有。


-1
投票

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

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

但是,这通常不是一个好主意,可能有更好的方法将变量传递给函数。例如,从函数 1 和 2 中调用的在本地设置变量的第三个函数怎么样?

© www.soinside.com 2019 - 2024. All rights reserved.