从 WooCommerce 中的 post 元数组变量值中获取特定值

Get specific value from a post meta array variable value in WooCommerce

我正在尝试获取 wordpress wp_postmeta 数据库中“键”的值。

我在数据库中设置了这个。

postId: xxxx

元密钥: _sco_post_data

元值: a:5:{s:15:"billing_country";s:2:"SE";s:16:" =55=]";s:5:"99999";s:14:"order_comments";s:14:"fdsfdafasdfasf";s:18:"dtwc_delivery_date";s:10: "2020-10-06";s:18:"dtwc_delivery_time";s:5:"19:30";}

现在,在我的 functions.php 中,我只想获取 'dtwc_delivery_date' 和 'dtwc_delivery_time' 的特定值。我试过了,但我唯一能做到的就是把它们放在一个 foreach 循环中。

function my_function( $order_id ) {
$order = wc_get_order( $order_id );
$meta = $order->get_meta('_sco_post_data'); //this returns an array

foreach ( $meta as $item ) {
    echo '<p><strong>'.__('Test Value').':</strong> ' .  $item. '</p>'; 
}

以上代码运行结果如下: 测试值:SE

测试值:99999

测试值:fdsfdafasdfasf

测试值:2020-10-06

测试值:19:30

我希望能够像这样调用值:

$meta['dtwc_delivery_date'] 但这 return 什么都没有。它是空的。

通常 $meta['dtwc_delivery_date'] 应该可以工作……现在您可以在数组上使用 print_r() 函数来查看它是如何构建的,并使用带有索引(键)的 foreach 循环来检查键并看看它是否会像您期望的那样工作:

function my_function( $order_id ) {
    $order  = wc_get_order( $order_id ); // Order object
    $values = $order->get_meta('_sco_post_data'); // get meta value (array)

    // Raw formatted output from the array to check how comes the data
    echo '<pre>'. print_r( $obj, true ) . '</pre>';

    // The loop
    foreach ( $values as $key => $value ) {
        // displaying array raw formatted output (and checking if you can get a value from its key
        echo '<p>Key: '. $key . ' | Value: '. $value . ' | Value from the key: '. $values[$key] . '<p>';
    }
}

这应该对你有帮助。