在 WooCommerce 订单项的自定义 SQL 查询中使用产品 ID 而不是产品名称
Use the product ID instead of product name in a custom SQL query on WooCommerce order items
如何获取特定产品 ID 而不是产品名称的订单项元?
$prodname = $product->get_name();
$result = $wpdb->get_results ( "SELECT
wp_woocommerce_order_items.order_item_name,
wp_woocommerce_order_itemmeta.meta_key,
wp_woocommerce_order_itemmeta.meta_value
FROM wp_woocommerce_order_items
RIGHT JOIN wp_woocommerce_order_itemmeta ON wp_woocommerce_
order_items.order_item_id=wp_woocommerce_order_itemmeta.order_item_id
WHERE `meta_key` LIKE 'ticketcode_fixed' AND `order_item_name` LIKE '$prodname' ");
foreach ( $result as $print ) {
echo '<span class="codes-anzeigen blue">' . $print->meta_value . '</span>';
要使用产品 ID 而不是产品名称作为动态变量进行 SQL 查询,您将使用以下 (适用于简单产品、可变产品或产品变体):
$results = $wpdb->get_results( $wpdb->prepare("
SELECT a.order_item_name, b.meta_key, b.meta_value
FROM {$wpdb->prefix}woocommerce_order_items a
INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta b
ON a.order_item_id = b.order_item_id
INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta c
ON a.order_item_id = c.order_item_id
WHERE b.meta_key LIKE '%s'
AND c.meta_key IN ('_product_id','_variation_id')
AND c.meta_value = %d
", 'ticketcode_fixed', $product->get_id() ) );
foreach ( $results as $result ) {
echo '<span class="codes-anzeigen blue">' . $result->meta_value . '</span>';
}
已测试并有效。
如何获取特定产品 ID 而不是产品名称的订单项元?
$prodname = $product->get_name();
$result = $wpdb->get_results ( "SELECT
wp_woocommerce_order_items.order_item_name,
wp_woocommerce_order_itemmeta.meta_key,
wp_woocommerce_order_itemmeta.meta_value
FROM wp_woocommerce_order_items
RIGHT JOIN wp_woocommerce_order_itemmeta ON wp_woocommerce_
order_items.order_item_id=wp_woocommerce_order_itemmeta.order_item_id
WHERE `meta_key` LIKE 'ticketcode_fixed' AND `order_item_name` LIKE '$prodname' ");
foreach ( $result as $print ) {
echo '<span class="codes-anzeigen blue">' . $print->meta_value . '</span>';
要使用产品 ID 而不是产品名称作为动态变量进行 SQL 查询,您将使用以下 (适用于简单产品、可变产品或产品变体):
$results = $wpdb->get_results( $wpdb->prepare("
SELECT a.order_item_name, b.meta_key, b.meta_value
FROM {$wpdb->prefix}woocommerce_order_items a
INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta b
ON a.order_item_id = b.order_item_id
INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta c
ON a.order_item_id = c.order_item_id
WHERE b.meta_key LIKE '%s'
AND c.meta_key IN ('_product_id','_variation_id')
AND c.meta_value = %d
", 'ticketcode_fixed', $product->get_id() ) );
foreach ( $results as $result ) {
echo '<span class="codes-anzeigen blue">' . $result->meta_value . '</span>';
}
已测试并有效。