Php WooCommerce:在post元数据数组中获取特定值
我只想返回以下查询的可退款金额7.83美元。如有任何建议,将不胜感激Php WooCommerce:在post元数据数组中获取特定值,php,sql,wordpress,woocommerce,deserialization,Php,Sql,Wordpress,Woocommerce,Deserialization,我只想返回以下查询的可退款金额7.83美元。如有任何建议,将不胜感激 SELECT post_id, meta_value FROM postmeta WHERE meta_key = 'wc_connect_labels' AND post_id =1561 返回-> a:1:{i:0;a:19 {s:8:"label_id";i:3379931;s:8:"tracking";s:22:"9405536205309714712744"
SELECT post_id, meta_value
FROM postmeta
WHERE meta_key = 'wc_connect_labels'
AND post_id =1561
返回->
a:1:{i:0;a:19 {s:8:"label_id";i:3379931;s:8:"tracking";s:22:"9405536205309714712744";s:17:"refundable_amount";d:7.83;s:7:"created";i:1615557045479;s:10:"carrier_id";s:4:"usps";s:12:"service_name";s:20:"USPS - Priority Mail";s:6:"status";s:9:"PURCHASED";s:22:"commercial_invoice_url";N;s:12:"package_name";s:20:"Regional Rate Box A1";s:9:"is_letter";b:0;s:13:}s:11:"product_ids";a:2:{i:0;i:1078;i:1;i:931;}s:15:"receipt_item_id";i:73747484;s:12:"created_date";i:1615557050000;s:11:"expiry_date";i:1631109049000;s:15:"main_receipt_id";i:55385442;s:4:"rate";d:7.83;s:8:"currency";s:3:"USD";s:12:"label_cached";i:1615557053000;}}
您可以使用WordPress函数get_post_meta(),该函数反序列化数组值,如下所示,您可以轻松获得“可退款金额”值,如:
$post_id = 1561;
$connect_labels = get_post_meta( $post_id, 'wc_connect_labels', true );
if ( isset($connect_labels['refundable_amount']) ) {
$refundable_amount = esc_attr( $connect_labels['refundable_amount'] );
}
或者使用WC\u数据
方法get\u meta()
从WC\u产品
对象执行以下操作:
$product = wc_get_product( 1561 ); // If needed
$connect_labels = $product->get_meta('wc_connect_labels');
if ( isset($connect_labels['refundable_amount']) ) {
$refundable_amount = esc_attr( $connect_labels['refundable_amount'] );
}
两者都应该可以工作。您可以通过
JSON\u decode()
函数解析JSON字符串。由于您使用的是WordPress&WooCommerce,您可能需要创建一个插件。显示的查询无法返回显示的输出-这是WordPress做出的输出解释…也许SELECT JSON\u EXTRACT()
可以帮助您,但是,我也同意Raptor和Akina的观点。谢谢您LoicTheAztec,但是我需要使用mysql和PHP来构建自定义报告。我需要查询另外两个表以及我列出的内容。