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
的值。
对我来说似乎很简单。您不需要设置全局变量,因为它已经存在于 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。
希望我能帮助你,如果你的问题没有更清楚的话。问题似乎有点老了,所以你现在可能已经弄清楚了。但以防万一你还没有。
因此您可以使用以下语法从函数内设置全局,然后在 PHP 中的其他位置访问它。
function foo(){
$GLOBALS['foobar'] = 'somestring';
}
function bar(){
echo $GLOBALS['foobar'];
}
foo();
bar();
但是,这通常不是一个好主意,可能有更好的方法将变量传递给函数。例如,从函数 1 和 2 中调用的在本地设置变量的第三个函数怎么样?