Woocommerce 使用产品 SKU 获取产品 ID
Posted
技术标签:
【中文标题】Woocommerce 使用产品 SKU 获取产品 ID【英文标题】:Woocommerce get Product id using product SKU 【发布时间】:2014-07-04 17:52:42 【问题描述】:我正在开发一个单独的模板页面,该页面使用 wordpress 帖子的自定义字段获取 woocommece 产品 sku。我需要获取该 sku 的产品 id 以创建 woocommece 对象并做进一步的事情,这是我的代码。
global $woocommerce;
//this return sku (custom field on a wordpress post)
$sku=get_field( "product_sku" );
if($sku!='')
//need to create object, but using sku cannot create a object,
$product = new WC_Product($sku);
echo $product->get_price_html();
有没有办法在创建对象之前获取产品ID,然后我可以将产品ID传递给WC_Product类构造函数并创建对象。谢谢
【问题讨论】:
$sku=get_field("product_sku");从 wordpress 自定义字段返回 woocommerce 产品的 sku,我需要获取该 sku 的产品 id 【参考方案1】:WooCommerce 产品是一种特殊的帖子类型。因此,WP_Query
可用于按 SKU 和其他参数查找产品。当您需要通过一些其他条件限制搜索时,这可以用作替代方法。
例如,如果您使用Polylang(或其他插件)进行网站翻译,您可能需要指定语言。或者您可以按产品类型限制搜索。
他们在 WooCommerce 方法get_product_id_by_sku
中进行直接 SQL 查询,我认为这在很多情况下都很好。但如果您使用翻译可能无法正常工作,它会返回随机产品,而不是当前语言的产品。
使用 WP_Query 按 SKU 查找产品的示例代码(受产品类型和语言的限制):
public function find( string $lang, string $sku )
$query = [
'lang' => $lang,
'post_type' => 'product',
'meta_query' => [
[
'key' => '_sku',
'value' => $sku,
'compare' => '='
]
],
'tax_query' => [
[
'taxonomy' => 'product_type',
'terms' => [ 'grouped' ],
'field' => 'name',
]
]
];
$posts = ( new WP_Query() )->query( $query );
return count( $posts ) > 0 ? $posts[0] : null;
【讨论】:
在那个例子中你不需要 tax_query,我不太明白你试图通过它实现什么。【参考方案2】:WooCommerce 2.3 最终在核心中添加了对此的支持。
如果你使用的是这个版本,可以调用
wc_get_product_id_by_sku( $sku )
【讨论】:
加法:这会得到$product = new WC_Product(wc_get_product_id_by_sku($sku));
【参考方案3】:
您可以使用此功能 (found here)。 Google 是您的朋友!
function get_product_by_sku( $sku )
global $wpdb;
$product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );
if ( $product_id ) return new WC_Product( $product_id );
return null;
【讨论】:
以上是关于Woocommerce 使用产品 SKU 获取产品 ID的主要内容,如果未能解决你的问题,请参考以下文章
sql 获取WooCommerce按产品/邮政ID或产品SKU获取订单ID
如何从 Woocommerce 中的订单项中获取产品 sku [重复]