根据产品类型向产品价格添加自定义文本标签

2023-12-30

我有一个小问题还无法解决。 我有这个WooCommerce 网站 http://www.wholesaleunderwear.co/product/men-s-crew-sport-sock-w-logo/具有可变产品,目前价格显示方式如下:

每打 5.50 美元 – 每打 100.00 美元

我使用这个 CSS 规则,在每个价格后添加“每打”,但这在当前情况下没有意义。

.price .amount:after {
content: " per dozen";
}

我想以这种方式显示该可变产品的价格:

$5.50 每打– 100.00 美元每箱(数量)

预先感谢您的任何帮助。


在这里,您将能够根据需要使用挂钩的自定义函数添加自定义标签woocommerce_price_html and woocommerce_variation_price_html过滤器挂钩(用于简单和变量产品。

对于变量产品中的最低/最高价格,我们需要一个挂钩的独立函数woocommerce_variation_sale_price_html过滤钩。

Update:因为我的代码现在也将处理单个产品上的“每打”,你必须删除你的自定义 CSS 规则.price .amount:after { content: " per dozen";}.

这将避免到处都有重复的“每打”。

但无法根据所选属性值在实时价格上设置不同的标签。为此,唯一的方法是使用JavaScript/jQuery,因为这是客户端的现场活动......

Update2
这是工作和测试的代码(见最后的截图):

add_filter('woocommerce_variation_price_html','prices_custom_labels', 10, 2 );
add_filter('woocommerce_price_html','prices_custom_labels', 10, 2 );
function prices_custom_labels( $price, $product ){

    // Custom label name
    $per_dozen = ' '. __('per dozen', 'woocommerce' );

    // Set HERE your "quantity" attribute slug
    $attribute_qty_slug = 'pa_quantity';

    $attribute_qty_slug_key = 'attribute_'.$attribute_qty_slug;
    $append_label = '';

    // 1) Variable products
    if ($product->product_type != 'simple' && $product->variation_id ) {

        // Getting the attribute "quantity" value
        $attribute_qty_is_set = $product->variation_data[$attribute_qty_slug_key];

        // if "quantity" not set we display " per dozen"
        if( ! $attribute_qty_is_set )
            $append_label = $per_dozen;


        // Outputed price + custom label
        $price = '<ins class="highlight">'.woocommerce_price( $product->regular_price ).$append_label.'</ins>';
    }
    // 2) Simple products
    else
    {
        // Here the output price + custom default label
        $price = '<ins class="highlight">'.woocommerce_price( $product->regular_price ).$per_dozen.'</ins>';
    }
    return $price;
}

add_filter('woocommerce_variable_price_html', 'prices_custom_labels_min_max', 20, 2);
function prices_custom_labels_min_max( $price, $product) {

    // Custom label name
    $per_dozen = ' '. __('per dozen', 'woocommerce' );
    $per_case = ' '. __('per case', 'woocommerce' );

    // Set HERE your quantity attribute slug
    $attribute_qty_slug = 'pa_quantity';


    // Getting the min and max variations prices
    $variation_min_reg_price = $product->get_variation_regular_price('min', true);
    $variation_max_reg_price = $product->get_variation_regular_price('max', true);
    $variation_reg_price = $product->get_variation_regular_price();


    if( $variation_min_reg_price == $variation_max_reg_price )
    {
        $price = '<ins class="highlight">'.woocommerce_price($variation_reg_price) . $per_dozen . '</ins>';
    }
    else
    {
        if( !in_array( $attribute_qty_slug, array_keys( $product->get_attributes() ) ) )
        {
            $price = '<ins class="highlight">' . woocommerce_price($variation_min_reg_price) . $per_dozen . ' - ' . woocommerce_price($variation_max_reg_price) . $per_dozen . '</ins>';
        }
        else
        {
            $price = '<ins class="highlight">' . woocommerce_price($variation_min_reg_price) . $per_dozen . ' - ' . woocommerce_price($variation_max_reg_price) . $per_case . '</ins>';
        }
    }
    return $price;
}

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


这是我的测试服务器的真实截图:

这段代码经过测试并且确实有效。


相关回答:

  • 当产品促销时,将自定义文本标签添加到价格中 https://stackoverflow.com/questions/42158091/adding-custom-text-labels-to-the-prices-when-products-are-on-sale/42159533#42159533
  • 将折扣百分比添加到正在销售的可变产品 https://stackoverflow.com/questions/42230027/adding-for-variable-products-on-sale-the-discounted-percentage/42230308#42230308
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据产品类型向产品价格添加自定义文本标签 的相关文章

  • DOMDocument 对我的字符串做了什么?

    dom new DOMDocument 1 0 UTF 8 str p Hello p var dump mb detect encoding str dom gt loadHTML str var dump dom gt saveHTML
  • 执行 mysqli->set_charset() 的永久方法?

    将我可以找到的字符集的所有配置文件和运行时选项设置为 utf 8 后 使用 php 建立的新 mysqli 连接的字符集仍然设置为 latin1 这实际上意味着我必须调用 mysqli gt set charset utf8 每次我连接 m
  • ruby 中可以做动态变量吗? [复制]

    这个问题在这里已经有答案了 我可以通过其他方式实现这种动态性质 但这引起了我的好奇 Ruby 中有类似的机制吗 varname hello varname world echo hello Output world 您可以使用以下方法实现类
  • 未知的 MySQL 服务器主机 (PHP)

    当尝试连接到我的数据库服务器时 我遇到了以下问题未知主机 Warning mysqli mysqli mysqli mysqli HY000 2005 Unknown MySQL server host xxxxxxxxxxxxx port
  • $_GET 作为 PHP 函数中的参数

    我有同样的问题 但是 我根据使用标头的 if 语句将用户重定向到通过函数构造的动态页面 为了使该函数正常工作 需要在标头的 GET 部分中传递参数 根据提供的答案 这是一种不好的做法 我应该用什么方式来做呢 function page ti
  • PHP,检查 URL 和文件是否存在?

    我为 WordPress 创建了一个插件 需要存在两个文件才能正常运行 第一个文件定义为文件系统路径 第二个文件定义为 URL 假设第一个文件是 home my site public html some folder required f
  • 有没有办法清除所有会话中的一些会话数据?

    一般来说 我有以下场景 从数据库中获取产品及其相关数据 将获取的数据转换为 php product 对象 在会话中缓存产品对象 缓存是只读的 即客户在网站上查看产品 但也有类似的电话getProductIdsByCategory categ
  • Laravel - 如何使用供应商类?

    我想在 m paths php 文件上使用移动检测 我已将该包添加为composer json 中的必需项 并将其安装在供应商文件中 我现在该如何使用它 我尝试了这个答案 但没有成功 因为找不到该课程 Laravel 4 使用供应商类 ht
  • 在订单编辑页面添加自定义元框并将其显示在客户订单页面上

    在 WooCommerce 中 想要在 WooCommerce 管理订单页面上添加自定义元框 在此框中 我只想在保存到该订单的文本字段中输入跟踪号码 然后在客户查看订单页面上 我想显示一个按钮 用于打开带有跟踪信息的模式 该模式只会拉入一个
  • Drupal:*.api.php 中的 hook_ 函数是否被调用过?

    在 Drupal 7 中 每个核心模块都有一个 api php文件 其中 是模块的名称 例如 modules node node api php modules path path api php 这些文件有什么用 它们包含以以下开头的函数
  • 原始 POST 数据是什么?

    我试图理解原始 POST 数据的含义 PHP 手册页 HTTP RAW POST DATA http php net manual en reserved variables httprawpostdata php只是声明这个变量包含Raw
  • PHP 字符串转日期时间(AM/PM)

    可以将格式为 A H i m d y 的字符串转换为 php 中的日期时间吗 示例字符串 AM 05 28 07 08 13 这不起作用 date DateTime createFromFormat A H i m d y AM 05 28
  • 来自外部文件的 PHP 变量?

    编辑 完成的解决方案 工作代码 所以 这是我的一个朋友帮我想出来的 这是我在 K2 items php 文件中使用的部分 div class fb comments div
  • PHP:分离业务逻辑和表示逻辑,值得吗? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么要在 PHP 中使用模板系统 https stackoverflow com questions 436014 why should i use templating system in php
  • WooCommerce 添加到购物车后停止重定向

    我希望在用户单击 添加到购物车 按钮后完全删除任何重定向 实际上我没有使用产品页面 我使用一个带有产品链接的简单按钮 如下所示 add to cart 492 我的用户将单击我页面上的多个 添加到购物车 按钮 因此在单击第一个按钮后他无法重
  • (mysql, php) 如何在插入数据之前获取auto_increment字段值?

    我正在将图像文件上传到存储服务器 在上传之前 我应该编写文件名 其中包含自动增量值 例如 12345 filename jpg 在插入数据库之前如何获取自动增量值 我只看到一种解决方案 插入空行 获取其自增值 删除这一行 使用 p 1 中的
  • 用 PDO 和准备好的语句替换 mysql_* 函数

    我总是做简单的连接mysql connect mysql pconnect db mysql pconnect host user pass if db echo strong Error strong Could not connect
  • 将 IP 地址与 IPv6 块进行比较

    我使用 PHP 将用户 IP 地址与 IP 块列表进行比较 其中大多数是 IPv4 但其中一些是 IPv6 我从用户那里获得的 IP 地址始终与 IPv4 兼容 至少我是这么假设的 我将如何比较这个 这就是我现在正在使用的 function
  • password_verify 哈希值与密码不匹配

    我使用下面的代码生成了密码哈希 hash password hash test PASSWORD BCRYPT 然后我使用 255 个字符将其存储在数据库中 然后我尝试使用比较器来测试登录 但失败了 它只允许我使用我之前刚刚生成的几行哈希登
  • 寻求有关标记视频系统上的“相关视频”查询的建议

    好吧 我运行一个小型视频网站 在实际的视频页面上有一条与大多数视频页面 例如 YouTube 类似的 相关视频 目前我所做的就是随机获取其标签之一并查找其他视频相同的标签 毫不奇怪 这不是一个好方法 因为有些标签非常模糊 有些视频被错误标记

随机推荐

  • Python Connexion — 400 响应错误中的控制“类型”键

    我在用着连接 https github com zalando connexion 一个用于 REST API 的 python 库 具有 swagger 定义 它对于实际请求正常工作 但是当出现错误情况 例如验证失败 时 它会返回如下响应
  • chrome.storage.sync 与 chrome.storage.local

    我试图了解如何使用 chrome storage api 我已将以下内容包含在我的manifest json permissions activeTab storage 然后 我使用开发工具打开了一个新选项卡并切换了
  • s3文件上传不返回响应

    我正在使用 Node AWS SDK 将文件上传到现有的 S3 存储桶 使用下面的代码 文件最终上传 但似乎有几次没有返回状态代码 另外 当文件成功上传时 return 语句不会执行 Code exports create function
  • Sharepreference来存储int值

    I have intvalue 我希望当我们单击警报对话框的正或负按钮时它会增加 1 并且即使用户关闭应用程序也存储 int 值 我已经完成了这些 但我不知道为什么这不起作用 int counter 在 oncreate 中 initA p
  • Google GMail API 服务帐户可列出多个帐户的电子邮件

    我正在开发一个 CRM 应用程序 其中所有员工用户都有一个位于同一域下的 GMail 帐户 我是这个域的管理员 之前 我使用 IMAP 对 CRM 中的所有 GMail 用户进行自定义访问 以便获取他们发送和接收的所有电子邮件 为此 我询问
  • 通过 VBA 在 Outlook 内部浏览器中打开网站

    我正在寻找通过 VBA 打开给定的网页 我可以使用以下方法来做到这一点 Set browser CreateObject InternetExplorer Application browser Navigate http google c
  • D3 中的饼图(甜甜圈)图段顺序

    我有一个使用 d3 和 jQuery 滑块构建的圆环图 允许用户在不同的数据点之间进行选择 该图表动画显示了数据值之间的过渡 一切都很好 问题 这些段始终按逆时针大小顺序渲染 从最大到最小 这意味着分段根据其大小在图表中切换其位置 这种行为
  • 您可以使用什么来让应用程序能够接收 SMS 消息?

    您需要使用某种提供商吗 您可以设置自己的短信服务器吗 是否存在任何开源解决方案 我是短信新手 所以任何关于如何实现这一点的见解都会很棒 我偏爱 Java 但任何语言都可以 这很容易 是的 您需要一个 短信网关 提供商 那里有很多 这些公司提
  • jsTree如何更改ajax url并重新加载数据

    jstree demo div2 jstree core data url tree ashx id id dataType json needed only if you do not supply JSON headers checkb
  • iTunes Connect - 总安装量与已安装该应用程序的当前设备的比较

    我如何知道或计算 iOS 应用程序的总安装量与安装该应用程序的当前设备的比较 我有总计单位 据我所知 这是总安装数 而不是现在有多少设备拥有我的应用程序 您可以使用第三方框架获取有关应用程序统计信息的更多详细信息 例如Flurry http
  • “模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用”错误

    为什么我收到错误 模板只能与字段访问 属性访问 一维数组索引或单参数自定义索引器表达式一起使用 在这段代码中 model IEnumerable
  • 如何在 R 中进行词形还原?

    这个问题可能是重复的R 或 python 中的词形还原器 am are is gt be https stackoverflow com questions 22993796 lemmatizer in r or python am are
  • 显示 xml 而不是站点

    我正在学习谷歌云 所以我尝试使用存储服务在那里部署我的反应应用程序 为此 我创建了一个名为 Travelfrontend 的存储桶 并从使用时生成的构建文件夹上传了文件和文件夹yarn build 我没有任何域名 所以我尝试从https s
  • 将 jwt 令牌发送到 wif wcf 服务

    我在向 wcf 服务发送 jwt 令牌时遇到问题 遵循了这个 它几乎有效 将 JWT SecurityToken 传递给 WCF 客户端 https stackoverflow com questions 16312907 deliveri
  • 在 VsCode 中将 () 替换为 {} 最有效的方法是什么?

    我正在使用 Visual Studio Code 经常发现自己必须替换括号 code 带大括号 code
  • Visual Studio 2013 发布失败超出最大连接数

    我正在使用 VS Express 2013 for Web 进行发布 在发布时其中一个 dll 上出现套接字错误 现在我根本无法发布 我收到一条 VS 错误 指出已超出此站点的最大连接数 了解更多信息 http go microsoft c
  • Mysql 返回子句等效

    我是 MySql 的新手 所以请温柔一点 是否有相当于RETURNINGOracle 中的子句或Inserted DeletedMySQL 中 SQL Server 中的表 我想做的是 从表 A 中删除一组行 将删除的行集插入表 B 中 请
  • SQL Server 视图中的模拟?

    是否可以通过模拟创建视图 类似于 execute as 在存储过程中 我想在单独的模式中创建一些视图 一些用户应该得到SELECT and UPDATE访问这些视图 以便它们能够更改基础表 但无需直接更新表 有观点可能吗 不 这是不可能的
  • 集成express.js应用程序和docpad

    我一直在使用 docpad 预先生成前端 html js 应用程序 使用docpad generate env static 经过几次挂断和 balupton 的错误修复后 它现在工作得很好 并节省了我很多时间 我只是将这些文件复制到现有的
  • 根据产品类型向产品价格添加自定义文本标签

    我有一个小问题还无法解决 我有这个WooCommerce 网站 http www wholesaleunderwear co product men s crew sport sock w logo 具有可变产品 目前价格显示方式如下 每打