如果存在订单元数据,则运行函数-WooCommerce

时间:2013-02-04 作者:Jeremiah Prummer

如果选中复选框,则会为WooCommerce中的“my\\u checkbox”自定义订单字段保存值1。我正在编辑订单管理表,如果“my\\u checkbox”的值等于1,我需要能够回显特定的图标url。我只是不知道如何检查该值是否等于1,以便我可以回显url。有什么想法吗?

为了简化故障排除,下面是代码:

/**
* Add checkbox field to the checkout
**/
add_action(\'woocommerce_after_checkout_billing_form\', \'match_previous_order_checkbox\');

function match_previous_order_checkbox( $checkout ) {
echo \'<div id="match_the_order">\';
woocommerce_form_field( \'my_checkbox\', array(
     \'type\'     => \'checkbox\',
     \'class\'    => array(\'form-row notes\'),
     \'label\'    => __( \'This is a previous order\' , \'woothemes\'),
     \'required\' => false,
    ), 
    $checkout->get_value( \'my_checkbox\' ));
    echo \'</div>\';
}
/**
* Update the order meta with field value
**/
add_action(\'woocommerce_checkout_update_order_meta\', \'match_order_checkout_field_update_order_meta\');

function match_order_checkout_field_update_order_meta( $order_id ) {
    if ($_POST[\'my_checkbox\']) {
    update_post_meta( $order_id, \'My_Checkbox\', esc_attr($_POST[\'my_checkbox\']));
    }
}
global $order;
$match_order_meta = get_post_meta( $order_id , \'My_Checkbox\' );
$match_order_meta = get_post_meta( $order->ID , \'My_Checkbox\' ); 也不起作用。也不管我是否包括global $order; 似乎没什么关系。

1 个回复
最合适的回答,由SO网友:Steve 整理而成

WooCommerce订单是帖子,其行为与任何WordPress帖子相同。因此,您可以使用相同的WordPress函数来更新或读取post元数据。

<?php $meta_values = get_post_meta($post_id, $key, $single); ?>
对于你的例子,我建议:

$match_order_meta = get_post_meta( $order->ID, \'My_Checkbox\', TRUE);
“TRUE”标志告诉WordPress以字符串形式返回值。如果没有TRUE标志,您将得到一个数组。再次查看下面的文档。

您还可以:

echo \'<!-- $order->ID -->\';
以确保您拥有正确的ID。

这是文件get_post_meta().

结束

相关推荐

Wp-content/plugins中的权限问题

我在本地机器上安装了一个WP,试图用插件弄脏我的手。我希望从github克隆一个包含此插件代码的项目。然而,我没有插件内部的权限,作为一个没有su权限的普通用户,我无法做到这一点。(当然,我可以成为根并这样做,但我不认为这是应该的)。然后,默认情况下,WP安装中的文件夹将组设置为“tape”,这对我来说很奇怪。本地WP安装上内部文件夹的正确权限应该是什么?