对于简单且可变的产品,以特定的 html 结构显示一些数据

2023-12-14

在 WooCommerce 中,我想创建一个函数,为每个变体或可变产品输出一个简单的数据“列表”。或者,如果是一个简单的产品,那么该产品本身的细节。我需要为每个项目添加的详细信息是:regular price, size attribute(用于变体)sale price, stock.

这是针对 WooCommerce 产品页面的“目录”版本,因此不会有实际的“添加到购物车”按钮或“变体”下拉列表。相反,我想呈现以下信息each向用户提供的产品/变体。

我需要输出每个数据,作为列表项<ul>. A new <ul>对于每个变体。

具有 3 种变体的产品示例:

<div class="fs-product-data-wrapper">
  <ul>
    <li class="fs-data-price">$49.98 ea.</li>
    <li class="fs-data-size">Size: 15-18"</li>
    <li class="fs-data-sale">$49.98 ea. Preferred Customer Price</li>
    <li class="fs-data-stock">Quantity in Stock: 40</li>
  </ul>
  <ul>
    <li class="fs-data-price">$799.98 ea.</li>
    <li class="fs-data-size">Size: 2-2.5'</li>
    <li class="fs-data-sale">$67.98 ea. Preferred Customer Price</li>
    <li class="fs-data-stock">Quantity in Stock: 15</li>
  </ul>
  <ul>
    <li class="fs-data-price">$29.98 ea.</li>
    <li class="fs-data-size">Size: 12"</li>
    <li class="fs-data-sale">$19.98 ea. Preferred Customer Price</li>
    <li class="fs-data-stock">Quantity in Stock: 0</li>
  </ul>
</div>

没有变化的产品示例,只是一个简单的产品:

<div class="fs-product-data-wrapper">
  <ul>
    <li class="fs-data-price">$99.98 ea.</li>
    <li class="fs-data-size">Size: 15-18"</li>
    <li class="fs-data-sale">$99.98 ea. Preferred Customer Price</li>
    <li class="fs-data-stock">Quantity in Stock: 32</li>
  </ul>
</div>

示例截图:

Screenshot of example

我可以管理它的CSS。我只需要能够在一段时间内生成这些数据ul对于每个“选项”。理想情况下,这也可以通过短代码完成,因为我将通过页面构建器模板填充它。但如果它挂接到现有的产品页面挂钩上,我就可以做到。也许woocommerce_after_single_product.


以下是一种显示简单和可变产品的一些特定格式的产品数据的方法:

// Utility funtion: getting and formtting product data
function format_product_data_output( $the_id ){
    $empty =  __( '<em>(empty)</em>', 'woocommerce' );

    // Get an instance of the WC_Product_Variation object
    $product = wc_get_product( $the_id );

    // Only wc_get_price_to_display() respect if product is to be displayed with or without including taxes
    $price = wc_price( wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) ) );
    $sale_price = wc_get_price_to_display( $product, array( 'price' => $product->get_sale_price() ) );
    $sale_price = ! empty( $sale_price ) ? wc_price($sale_price) : $empty;

    $size = $product->get_attribute( 'pa_size' );
    $size = ! empty( $size ) ? get_term_by( 'slug', $size, 'pa_size' )->name : $empty;

    $stock_qty = $product->get_stock_quantity();
    $stock_qty = ! empty( $stock_qty ) ? $stock_qty : $empty;

    $output = '
    <ul>
        <li class="fs-data-price">'.$price.'</li>
        <li class="fs-data-size">Size: '.$size.'</li>
        <li class="fs-data-sale">'.$sale_price.' Preferred Customer Price</li>
        <li class="fs-data-stock">Quantity in Stock: '.$stock_qty.'</li>
    </ul>';

    return $output;
}

//
add_action( 'woocommerce_after_single_product', 'custom_table_after_single_product' );
function custom_table_after_single_product(){
    global $product;

    $output = '<div class="fs-product-data-wrapper">';

    // Variable products
    if( $product->is_type('variable'))
    {
        // Get available variations in the variable product
        $available_variations = $product->get_available_variations();

        if( count($available_variations) > 0 ){
            foreach( $available_variations as $variation )
                $output .= format_product_data_output( $variation['variation_id'] );
        }
    }
    // Simple products
    elseif( $product->is_type('simple'))
    {
        $output .= format_product_data_output( $product->get_id() );
    }
    else return; // Exit

    echo $output .= '</div>'; // Display
}

代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。

你必须管理CSS(可能还有一些小细节)。需要的东西大部分都在那里。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于简单且可变的产品,以特定的 html 结构显示一些数据 的相关文章

  • PHP 如果不存在,则从字符串中删除 ','

    我正在运行这段代码 stmt pdo conn gt prepare SELECT from admin where support emails support emails and logged logged and disabled
  • JSP中如何在两个变量之间插入空格? [复制]

    这个问题在这里已经有答案了 我在 JSP 页面上的表单中有一行 html 如下所示
  • Facebook 中用户的时区是如何编码的

    我需要检查用户的时区 但我找不到它的真正定义 参考API http developers facebook com docs reference api user says 用户的时区与 UTC 的偏移量 现在在维基百科上这些是可能的时区
  • Facebook Graph API v3.1 开发人员访问令牌权限限制

    如您所知 Facebook 将其 API 升级到了 V3 1 现在正在慢慢地淘汰旧的 API 和应用程序 因此我们必须迁移到新的 API 他们做出了一些艰难的决定 这对垃圾邮件网站来说是好事 但对开发人员来说也很难 提醒 Graph API
  • 图像仅在 iPhone x 上拉伸

    我目前正在设计和构建一个 html 和 css 网站 遇到了一个小问题 我使用 chrome 开发工具检查了响应能力 根据手机和平板电脑的大小调整窗口大小 一切看起来都很好 然而 现在我在 iPhone X 上检查了该网站 图像全部垂直拉伸
  • 输入类型=“时间”超过24小时

    我刚刚遇到以下问题 在网络应用程序用户界面中 我希望用户输入响应消息的时间范围 以小时为单位 时间范围应最长为 72 小时 我们很乐意使用
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • ExitFullScreen 不起作用 + 无论如何要按键盘单击按钮?

    我的浏览器 Google Chrome 版本 33 0 1750 154 m Script function exitFullscreen var element document documentElement if element mo
  • 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

    通过对照正在处理和已完成的订单检查来宾客户的电子邮件地址 如果电子邮件没有订单 我想给来宾 首单折扣 如果这能在客人输入电子邮件时发生 那就太好了 我想我已经成功制作了折扣代码 现在我请求帮助合并这两个代码 使其一切正常 这是折扣代码 ad
  • 如何在缩放动画中保持原点位于图像中心?

    我有类似的情况fiddle https jsfiddle net ddvn3p1h 3 其中我有一个 CSS3 动画 可以缩放绝对定位在另一个元素中心的元素 但是 当动画发生时 它会偏离中心 如示例中相对于蓝色的红色方块所示 我如何将其居中
  • 根据通过 AJAX 请求的用户输入重绘 google 图表

    我有一个谷歌图表从我的数据库中提取数据 它可以按我想要的方式工作 根据 URL 中的 get 请求 它从所选表中提取数据 我想根据下拉菜单中选定的表通过 ajax 更新此图表 我无法突破的部分是通过 ajax 获取数据响应 我认为下面的代码
  • 如何使用javascript隐藏div

    我想使用 Javascript 隐藏一个 div 下面是我的div div class ui dialog titlebar ui widget header ui corner all ui helper clearfix span cl
  • 在 Apache 服务器上将特定的 .htm 页面处理为 .php [重复]

    这个问题在这里已经有答案了 我正在为 Apache 服务器编程 并且只需要将一个特定的 html 页面 例如 first htm 作为 PHP 脚本进行处理 可以设置吗 SetHandler http httpd apache org do
  • 为什么盒子大小调整不适用于画布元素上的宽度/高度属性?

    让我们考虑一下这段代码 canvas width 150px height 150px canvas box sizing border box border 5px solid
  • PHP 时间间隔

    我正在寻找一个看起来应该非常简单的解决方案 但似乎我不能在这里找到任何好的答案 而且我自己似乎无法让它发挥作用 我正在寻找的是设置开始时间 结束时间 然后迭代给定时间间隔之间的一组时间 例如 上午 9 00 下午 5 00 是开始时间 这些
  • Laravel - 覆盖模型 ID

    我正在开发电子书管理系统 我使用 UUID 而不是自动递增整数主键 它工作得很好 protected static function boot parent boot static creating function model model
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • 图像创建从jpeg() PHP

    我正在使用 imagecreatefromjpeg 函数合并两张图片 现在我面临的问题是 当我使用服务器中的图片时 它工作正常 而当我使用其他网站的图片时 它不起作用 例如 当我使用这个 PHP 文件时http coolfbapps in
  • PHP 文件服务脚本:下载不可靠?

    这篇文章最初是关于 ServerFault 的一个问题 https serverfault com questions 131156 user receiving partial downloads https serverfault co
  • 快速响应的交互式图表/图形:SVG、Canvas 还是其他?

    我正在尝试选择正确的技术来更新一个项目 该项目基本上在可缩放 可平移的图表中渲染数千个点 当前使用 Protovis 的实现性能不佳 在这里查看 http www planethunters org classify http www pl

随机推荐

  • Volumes_from 指令 - docker compose

    与下面的docker compose yml file test build dockerfile docker dev Dockerfile volumes from cachev cachev build dockerfile dock
  • XPath 和 Jenkins Plot 插件

    我正在尝试使用 Jenkins 的 Plot 插件生成一个图表 显示我们的代码中有多少个 TODO 标记 我在构建过程中生成了一个 XML 文件 其中包含有关它们的数据 除其他外 每个 TODO 标记在 XML 中都有一行 如下所示
  • 使用 sqlalchemy WHERE 子句和 IN 运算符时保持顺序

    考虑以下数据库表 ID ticker description 1 GDBR30 30YR 2 GDBR10 10YR 3 GDBR5 5YR 4 GDBR2 2YR 可以用这段代码复制它 from sqlalchemy import Col
  • jQuery 验证 - 如何使用两个 XOR 规则验证一个字段

    我有一个字段可以包含电子邮件或手机 在我的例子中手机是 8 位数字 我已经尝试了两种方法 两个示例都不起作用 因为 元素 没有验证方法 第一种方法 创建自定义方法并在那里进行两种验证 但随后我必须创建自己的电子邮件和移动验证 我找不到在新方
  • useCallBack 执行两次

    为什么 useCallback 钩子执行两次 我收到一条警告 建议我使用 useCallback 所以我正在尝试这样做 据我了解 useCallback 仅在我们传递给数组的对象更新时才会执行 所以我的目标是在加载令牌后让 websocke
  • 从 ThreadPoolTask​​Executor 获取可调用对象或将 Runnable 转换为 Callable

    我在用着线程池任务执行器用于执行我的任务 这些任务是Callable界面 我只想及时检查任务是否仍在池中 监视 怎么做 我知道我可以从线程池执行器但我怎样才能将 Runnable 转换为 Callable 呢 基本上我有这个可调用的 pub
  • 启用和禁用 Android 中的日期

    我在我的应用程序中使用日历 在我的应用程序中成功实现了日历 但问题是如何启用和禁用特定日期 例如 需要在所有月份中仅启用星期一或在所有月份中启用星期一和星期日 我的日历视图 import java util ArrayList import
  • psycopg2.sql 发生了什么?

    在 psycopg2 文档中它引用了sql充满乐趣的财产safely构造 SQL 字符串 然而我在 python 3 上的安装 应该是 PyPI 的最新版本 不包含这样的属性 from psycopg2 import sql ImportE
  • 如何在 matplotlib 中的特定日期绘制垂直线[重复]

    这个问题在这里已经有答案了 如何在特定日期向该图表添加垂直线标记 Week end是日期列 fig ax plt subplots figsize 20 9 thirteen plot line x Week end y OFF color
  • 在 PowerShell 中如何将文件从远程 PSsession 复制到另一台 Windows 服务器

    我正在尝试将文件夹从一台远程服务器复制到 PSSession 内的另一台服务器 它给出了诸如访问被拒绝之类的错误 我对两台服务器都有管理员权限 如果我在没有 PSSession 的情况下尝试它 它会起作用 在远程服务器中 PS C User
  • 如何将变量放置在内存中给定的绝对地址处(使用 GCC)

    RealView ARM C 编译器supports使用变量属性将变量放置在给定的内存地址处at address int var attribute at 0x40001000 var 4 changes the memory locate
  • 屏幕关闭时如何获取传感器数据?

    我正在尝试创建一个应用程序 使用服务在一定时间内跟踪设备的方向 当方向改变时 设备会发出声音 只要设备处于开启状态 此功能就可以完美运行 一旦我锁定设备或屏幕关闭 我就听不到声音 我想要的 我的服务代码是 public class Raka
  • 如何从多个 $_POST 数组插入 MYSQL 行

    我有一个带有 添加联系人 部分的表单 单击该部分后 它会在表单中添加另一行 其中还有 3 个输入框 jfiddle上的代码段 http jsfiddle net fmdx cYxYP HTML
  • 如何从 Tkinter 获取输入

    我正在使用 Tkinter 制作一个程序 其中用户输入以磅为单位的体重 然后输出以公斤为单位的体重 我在获取内容时遇到问题Entry来自用户 我正在计算磅换算为公斤clicked1 有人可以告诉我如何在那里获得条目输入吗 from Tkin
  • 为什么我保存的 D3 选择在某些情况下没有效果?

    我对如何保存 D3 选择供以后使用感到困惑 在下面的代码中 我的轴有一个 全局 变量 首次创建它们时我将它们保存到该变量中 后来 我可以将此变量用于某些事情 此处 设置一些文本 但不能使用其他变量 此处 更新比例 这仅在我显式 重新 选择轴
  • conda 更新 CondaHTTPError:HTTP 无

    跑步中途Conda Update all 更新停滞了 多个软件包已更新 现在 当我跑步时conda update all or conda update conda 我得到这样的回应 C Users AppData Local Contin
  • 使用 Indy 10 和 DELPHI 评估电子邮件

    我使用以下代码来评估消息 使用 INDY 10 组件收到的电子邮件消息的内容 正文 行 function LinesFromMsg aMsg TIdMessage TStrings var i Integer begin for i 0 t
  • 关于Java基本类型方法的问题

    我对 Java 中的原始类型以及将一种类型转换为另一种类型的方法感到困惑 比如说 如果我有一个整数并且想将其转换为字符串 我需要使用 Integer 或 String 的静态方法 例如 String valueOf some integer
  • Ansible 中的列表按自然字母数字顺序排序

    有没有办法以自然的方式对 Ansible 或 Jinja 中的列表进行排序 例如 这是列表 test test123 test12 test5 test1234test test22te 我需要它来考虑整个数字而不是单个数字 所以test1
  • 对于简单且可变的产品,以特定的 html 结构显示一些数据

    在 WooCommerce 中 我想创建一个函数 为每个变体或可变产品输出一个简单的数据 列表 或者 如果是一个简单的产品 那么该产品本身的细节 我需要为每个项目添加的详细信息是 regular price size attribute 用