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
的值。
答案 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中调用。