获取 WooCommerce 可变产品单页中选定的产品变体 ID

2023-11-29

对于我的 WooCommerce 可变产品,我在单个产品页面上实现自定义尺寸选择器,并将这些尺寸放在表格中:

enter image description here

这些变化只是:30B 30C 30D而不是被分成:30 and B C D

我想弄清楚的是:如何获取每个产品变体的运输类别?

我的购物车页面上有类似的内容,但我不知道变体 ID 是什么,也不知道如何从单个产品页面获取它:

$product_id = ( 0 != $cart_item['variation_id'] ) ? $cart_item['variation_id'] : $cart_item['product_id'];
// need the variation id for the above to be able to do the rest:

$product_shipping_classes = get_the_terms( $product_id, 'product_shipping_class' );
$product_shipping_class_name = ( $product_shipping_classes && ! is_wp_error( $product_shipping_classes ) ) ? current( $product_shipping_classes )->name : '';

一旦获得变体 ID,我就知道该怎么做。我只是不知道如何获得它来完成剩下的事情。我唯一需要获取的是产品 ID 和变体的 slug(此页面上还有一个颜色属性)。

然而,我已经给了产品一个默认的变体来使用(所以隐藏的variation_id已设置)。

也许需要首先获取以了解所选颜色的 id,然后获取其他颜色的变体 id?


在可变产品的 WooCommerce 产品单页中,您无法在 PHP 中获取所选产品变体,因为它是实时事件(客户端,而不是服务器端)。

实现方法是使用 JavaScript/jQuery 来获取它。由于您没有为该单个产品页面提供有关您的可变产品的任何相关代码,因此我不可能为您提供完全满足您需求的真实工作代码。

获取单个产品页面上为可变产品选择的变体 ID(在此示例中,我在“添加到购物车”按钮下方动态显示所选变体 ID):

add_action( 'woocommerce_single_product_summary', 'single_product_variable_customization', 3, 0 );
function single_product_variable_customization() {
    global $product;

    // Only for variable products on single product pages
    if ( $product->is_type('variable') && is_product() ) {

    ##  ==>  ==>  Here goes your php code (if needed)  ==>  ==>  ##

    // Passing a variable to javascript
    $string1 = "The selected Variation ID is: ";
    $string2 = "No Variation ID is selected ";
    ?>
    <script>
    jQuery(document).ready(function($) {

        // Initializing
        var myText1 = '<?php echo $string1; ?>', myText2 = '<?php echo $string2; ?>';

        // Get and display the default variation ID after add-to-cart button (initialization)
        if( '' != $('input.variation_id').val() )
            $('div.woocommerce-variation-add-to-cart').after('<div class="selected-variation-id">'+myText1+$('input.variation_id').val()+'</div>');
        else
            $('div.woocommerce-variation-add-to-cart').after('<div class="selected-variation-id">'+myText2+'</div>'); // No ID selected

        console.log($('input.variation_id').val()); // Output in the browser console


        // Get and display the chosen variation ID after add-to-cart button
        $('select').blur( function(){
            if( '' != $('input.variation_id').val() )
                $('div.selected-variation-id').html(myText1+$('input.variation_id').val());
            else
                $('div.selected-variation-id').html(myText2); // No ID selected

            console.log($('input.variation_id').val()); // Output in the browser console
        });
    });
    </script>
    <?php
    }
}

代码位于活动子主题(或主题)的 function.php 文件中或任何插件文件中。

此代码在 WooCommerce 3+ 下进行了测试并且可以工作。

因此,在此基础上,您可以创建自己的函数来满足您的要求(因为您不再提供必要的细节或代码)。

一些相关的答案示例用法(使用 jQuery 和 Woocommerce 单一产品页面):

  • 重命名 WooCommerce 3 中缺货产品的“添加到购物车”按钮
  • 将可变产品价格替换为 WooCommerce 3 中选择的变化价格
  • 可变产品选择器:获取实时选择的值
  • 将所选产品变型数据传递到联系表 7 查询表中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 WooCommerce 可变产品单页中选定的产品变体 ID 的相关文章

  • 更改 Symfony2 中的默认语言环境

    我正在尝试更改应用程序的默认区域设置 到目前为止我尝试过的事情 将 intl default locale 设置为 et EE 将区域设置设置为 et app config parameters ini 更改了我的捆绑包 boot 方法中描
  • javascript函数知道它的名字吗

    我有一个名为 getItem 的函数 我想使用其中的代码读取该函数的名称 这可能吗 function getItem var functionName how do I read the function name alert functi
  • PHP json_encode 反斜杠和数组名称的问题

    我正在将一些 postgresql 数据转换为 PHP json encode 但我遇到了一些问题 json encode 将 BackSlash 添加到我的数据中的所有斜杠中 在描述中出现段落标记的结束 我认为是因为反斜杠问题 我不希望我
  • 将字符串拆分为字母数组 - 双字符字母 PHP

    我需要将一个字符串拆分为一个字母数组 问题是在我的语言 克罗地亚语 中也有双字符字母 例如 lj nj d 所以字符串如ljubi icajecvijet应该分成一个数组 如下所示 Array 0 gt lj 1 gt u 2 gt b 3
  • PHP中的“@/path/to/a/file”是什么意思?

    我偶然发现以下代码示例 image file path code tmhOAuth gt request POST https upload twitter com 1 statuses update with media json arr
  • 粉碎一个元素,向随机方向发送碎片

    我试图 粉碎 一个元素 例如 一个图像 并将其碎片朝随机方向飞行 当碎片到达目的地时 即x距离 以像素为单位 它们变成原始图像的较小版本 jQuery UI 的explode http api jqueryui com explode ef
  • 获取特定 $_POST 数组的值

    name qty foreach POST as items gt value check qty gt 1 echo key gt value br 如何仅显示其值为 qty1 gt value qty2 gt value gt 0 的项
  • 按日期对 JSON 进行排序

    我知道这一定相对简单 但我有一个 JSON 数据集 我想按日期排序 到目前为止 我每次都会遇到问题 现在我将日期存储为this lastUpdated 如果有帮助的话 我可以访问 jquery 但我意识到 sort 是本机 JS 提前致谢
  • 如何防止默认事件触发但仍允许事件冒泡

    使用 jQuery 使用以下代码 我想防止 href url 在本例中为哈希 在单击时触发 但仍然允许单击事件继续在链上冒泡 请问如何实现这一点 div a href Test a div a click function e stop a
  • 如何垂直打印数组中的字符串元素? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个数组 我想垂直打印每个元素 例如 myArr abc def ghi 输出应该是 a d g b e h c f
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • Javascript“命名空间”和 jQuery AJAX

    我正在使用此处列出的建议 http www odetocode com articles 473 aspx http www odetocode com articles 473 aspx 使用模拟的JavaScript AJAX网络聊天系
  • Symfony2 Beta3 中不断收到“您请求了一个不存在的服务“test.client””

    我正在尝试设置单元测试 但每当我运行 phpunit c app 时 我都会收到此错误 Symfony Component DependencyInjection Exception ServiceNotFoundException 您请求
  • 使用 jQuery 更改 SVG 元素的“xlink:href”属性

    我正在尝试使用单击事件更改 xlink href 属性 到目前为止它部分有效 这就是我正在做的 HTML a href class ui btn ui corner all ui shadow editIcon style text ali
  • 使用 google 检查 url,安全 = 活动

    如何检查 url 是否被 google 显示 Example https www google com search q redtubex xxx safe active Code input http www example com in
  • Jpgraph:如何在php中设置组条形柱形图的标签

    这是我的 jpgraph 演示代码
  • PDF:在现有 PDF 文件中插入一行文本

    我有一个 PDF 文件 我希望在所有页面 前两页除外 的页脚上添加一行纯文本 不是徽标或类似内容 有谁有一个如何做到这一点的例子 用任何语言 Update 原始 PDF 是用 Scribus 制作的 我可以完全控制它 因此 如果更容易进行查
  • 用于生成多色文本的 jQuery 插件,该文本可在悬停时改变颜色

    我想为各种链接生成多色文本 并从预先指定的颜色数组中为各个字母随机分配颜色 当将鼠标悬停在带有文本的 div 上时 颜色会发生变化 我正在考虑一个 jQuery 插件 脚本将是可行的方法 我想知道是否存在这样的插件或近似插件 Thanks
  • 自动更改 Twitter Bootstrap 选项卡

    我希望 Twitter Bootstrap 选项卡按时间顺序更改 我使用它们有点像旋转木马 我希望选项卡每 10 秒切换到下一个选项卡 这是一个例子 http library buffalo edu http library buffalo
  • 根据产品类别自定义购物车总计和结帐总计文本

    我想根据产品类别 或其他一些逻辑 自定义购物车和结帐订单汇总表中的文本 例如 对于 总计 文本 参见图片 如果购物车包含名为 杂货 的类别中的产品 那么我希望订单摘要中的文本显示为 总计估计 文本 参见图片以下 如果购物车不包含任何杂货 那

随机推荐

  • 使用滑块更新散景图

    我正在尝试使用滑块来更新我的散景图 我发现使用 pandas dataframe 很难实现它 到目前为止没有找到任何例子 另一种方法是使用 columndatasource 在论坛上找到了一些示例 但仍然无法实现该功能 所以我有两列 X 轴
  • 如何正确等待 execve 完成?

    C 源代码 在 Linux Centos 6 3 上编译并运行 包含以下行 execve cmd argv envp execve不返回 但我想修改代码以知道它何时完成 所以我这样做 if child fork waitpid child
  • 使用 pybind11 嵌入 python。虚拟环境不起作用

    我正在尝试制作一个简单的 C 应用程序 它使用以下命令翻译短语googletranspython 库 所以我选择了pybind11为此目的嵌入Python 我还使用 cmake 进行代码配置 当我使用全局 python 安装时 一切正常 但
  • 使用 eigen3/sparse 的稀疏特征值

    是否有一种独特且有效的方法来查找实数 对称 非常大 比如说 10000x10000 的稀疏矩阵的特征值和特征向量Eigen3 有一个用于稠密矩阵的特征值求解器 但它没有利用矩阵的属性 例如这是对称性 此外 我不想将矩阵存储为密集的 或者 替
  • 用 C++ 制作简单的跨平台 GUI 的最佳方法是什么? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想制作一个带有非常简单的 GUI 背景图形 取消按钮和进度条 的桌面应用程序 我的主要目标是 Mac 和 Windows 使用 Visual C 2008 可以吗 任何人都可以
  • 使用 CasperJS 实现页面对象模式

    有没有人已经用 casperjs 实现了著名的 页面对象模式 从长远来看 它对于测试可维护性非常有用 当您必须将测试的机制和目的分开时 使用它非常非常酷 以这种方式编写测试会变得更加愉快 有一些 ruby 和 selenium 的例子 ht
  • 列表理解/生成器中的海象赋值表达式

    我试图传递每个元素foo list变成一个函数expensive call 并获取其输出为的所有项目的列表expensive call是诚实的 我正在尝试用列表理解来做到这一点 这可能吗 就像是 像这样的事情 result list y e
  • 无法在套接字上使用 BufferedReader/Writer 发送和接收数据

    我正在制作一个客户端 服务器应用程序 并使用以下代码在服务器和客户端之间交换数据 服务器的发送和接收代码 public void run try BufferedReader input new BufferedReader new Inp
  • 具有特定值的行名和列名

    我有这个矩阵 我想得到一个 2 列矩阵 其中一列有行名 另一列有值为 1 的单元格的列名 x X1 X2 X3 X1 1 0 1 X2 0 1 0 X3 0 1 1 X4 1 0 0 str x num 1 886 1 886 1 0 1
  • 从“package::function”形式的字符串中获取函数

    有过讨论关于如何从字符串中获取变量 的确 get例如 适用于data table功能 get data table 回报data table 然而 gt get data table data table Error in get data
  • 带有 mongodb 的 yii2 无法登录或注册

    我们按照此 youtube 链接创建 yii2 mongodb 连接 但不起作用 检查此链接 https www youtube com watch v 1msu95ZkRe8 给出一个错误对象配置必须是包含 class 元素的数组 在视频
  • 将 varchar() 中的重音字符转换为 XML 导致“非法 XML 字符”

    我有一个应用程序写入的表 该字段为 varchar max 数据看起来像 xml DECLARE poit VARCHAR 100 SET poit
  • 如何在 Gtk 2 窗口上创建 cairo_t

    我有一个旧的应用程序 现在在 Gtk 2 上编译 但我需要介绍一下 Cairo 的使用 我不知道如何从我的小部件创建必要的 cairo 上下文 cairo t 这是我到目前为止正在尝试学习的代码 是从 Gtk 3 教程中修改的 咳咳 抄袭
  • 滚动到视图与移动到元素

    在 Selenium WebDriver 中 有两种主要方法将一个元素放入可见区域 滚动到视图中 JavascriptExecutor driver executeScript arguments 0 scrollIntoView true
  • Java中前后缀“++”运算符的语义[重复]

    这个问题在这里已经有答案了 我想知道为什么这段代码给出输出112最后一个数字如何2正在创造 public static void main String args int i 0 System out print i System out
  • 使用 HTTP 端点下载 Mule 文件

    我负责在流程结束时下载文件的 HTTP 端点出现错误 它不断尝试与http 80 而不是传入的 URL 我在这里做错了什么
  • PHP 会话变量在页面之间发生变化

    我有一个会话变量 设置如下 然后在另一个页面上我有这个 问题是它们不匹配 我得到两个完全不同的字符串 register globals已关闭 我确实注意到当我设置时md5 为常量字符串 例如 md5 example 它按预期工作并且两个字符
  • 多路交互:获得数值系数估计的简单方法?

    假设存在 4 路交互 采用 2x2x2 阶乘设计加上连续变量 因素具有默认的对比编码 contr treatment 这是一个例子 set seed 1 cat1 lt as factor sample letters 1 2 1000 r
  • 通过 HTTP POST 向 IHttpHandler 发送 XML 数据会导致 HttpRequestValidationException

    我正在编写一个 IHttpHandler 实现 它将接收通过常规 HTTP POST 从另一个网站发送的 XML 数据 这是实现的原型 public class MyHandler IHttpHandler public void Proc
  • 获取 WooCommerce 可变产品单页中选定的产品变体 ID

    对于我的 WooCommerce 可变产品 我在单个产品页面上实现自定义尺寸选择器 并将这些尺寸放在表格中 这些变化只是 30B 30C 30D而不是被分成 30 and B C D 我想弄清楚的是 如何获取每个产品变体的运输类别 我的购物