php - 通过 Woocommerce 中的产品属性 slug 值对获取产品变体 ID

标签 php sql wordpress woocommerce product

如何通过分类术语获取产品变体 ID?

例如,如果我有两个分类法及其术语:

1) Size: medium, large
2) Color: blue, green

以及我的产品变体:

Variation id 1: medium > blue
Variation id 2: medium > green
Variation id 3: large > blue
Variation id 4: large > green

我想获取此术语组合的变体 ID medium > green

最佳答案

以下函数使用非常简单的 SQL 查询从定义的产品属性“颜色”和“尺寸”术语 block 的可变产品中获取变体 ID:

function get_product_variation_id( $size, $color, $product_id = 0 ) {
    global $wpdb;

    if ( $product_id == 0 )
        $product_id = get_the_id();

    return $wpdb->get_var( "
        SELECT p.ID
        FROM {$wpdb->prefix}posts as p
        JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
        JOIN {$wpdb->prefix}postmeta as pm2 ON p.ID = pm2.post_id
        WHERE pm.meta_key = 'attribute_pa_color'
        AND pm.meta_value LIKE '$color'
        AND pm2.meta_key = 'attribute_pa_size'
        AND pm2.meta_value LIKE '$size'
        AND p.post_parent = $product_id
    " );
}

代码进入事件子主题(或事件主题)的 function.php 文件。经过测试并有效。


用法 (2 个例子):

  1. 来自定义的变量产品 ID(其中 746 是父变量产品 ID):

    $variation_id = get_product_variation_id( 'large', 'blue', 746 );

  2. 在可变产品单品页面(无需定义可变产品ID):

    $variation_id = get_product_variation_id( 'large', 'blue' );

关于php - 通过 Woocommerce 中的产品属性 slug 值对获取产品变体 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52105913/

相关文章:

mysql - 有没有一种方法可以将应用程序上下文传递给非 Sybase 数据库服务器中的数据库连接(类似于 Sybase 中的 set_appcontext)?

jquery - Wordpress 标题作为 Fancybox 标题

php - 为博客构建 MySQL 数据库以包含 "labels"或 "tags"

javascript - PHP JSON 无法回显值,总是返回数组?

php - 如何取回 PHP "setrawcookie"值?

php - 如何在 CodeIgniter 中以 Base64 编码发送电子邮件?

SQL 为包含所有给定值的多列创建语句

mysql - SQL - 试图判断查询的哪一部分与 'OR' 语句匹配

css - 图像与导航子菜单重叠

wordpress - Vagrant Up 失败,因为该名称已存在