WooCommerce:如何显示“产品附加组件”扩展中的字段?

2023-11-27

我正在使用 WooCommerce 的 [产品附加组件][1] 扩展,它允许产品的自定义字段。这会自动显示在单个产品模板上。

通过对单一产品模板的一些尝试和错误,它似乎挂在了某个地方woocommerce_single_product_summary(single_meta?)。

我需要将同一组表单字段显示在archive-product模板(产品列表)。就我而言,这是卡请求字段和交货日期字段。两者都需要才能将产品从产品存档添加到购物车。我不确定是否有一个可以调用的函数,如果它涉及一些更高级的编码。


根据 Pelmered 的回答,我能够通过将其添加到functions.php 来显示附加字段:

add_action( 'woocommerce_after_shop_loop_item_title', array($GLOBALS['Product_Addon_Display'], 'display'), 10);

第一次尝试

然后,问题是产品存档没有创建表单元素,只是创建“添加到购物车”按钮的锚链接。所以我尝试手动填写表格。代码来自content-product.php:

<?php do_action( 'woocommerce_before_shop_loop_item' ); ?>
<h2><?php the_title(); ?></h2>

<?php // MANUALLY PUT IN FORM, BECAUSE HOOKS ONLY PUT IN A BUTTON AND NO FORM. NEEDED FOR ADD-ON FIELDS ?>
<form class="cart" method="post" enctype='multipart/form-data'>
    <?php
        /**
         * woocommerce_after_shop_loop_item_title hook
         *
         * @hooked woocommerce_template_loop_rating - 5
         * @hooked woocommerce_template_loop_price - 10
         */
        do_action( 'woocommerce_after_shop_loop_item_title' );
    ?>          
    <div itemprop="description">
        <?php the_content(); ?>
    </div>
    <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" />
    <button type="submit" class="single_add_to_cart_button button alt"><?php echo $product->single_add_to_cart_text(); ?></button>
</form>

<?php //do_action( 'woocommerce_after_shop_loop_item' ); ?>

这可行,但有点搞乱了 AJAX 提交和 flash 消息。单击“添加到购物车”按钮后,页面似乎刷新,然后看起来什么也没发生。但是当您转到另一个页面时,它会显示消息(并且可以堆叠多个)。

第二次尝试

所以我看到原始的 AJAX 购物车按钮(不在表单内)使用查询字符串发送产品 ID。因此,我现在尝试通过修改添加到购物车 JS 来添加其他参数。这奏效了。我所做的添加为已接受的答案。


我找到了一个有效的解决方案,使用 jQuery 将表单字段值添加到 AJAX 请求。这需要使用您自己的版本覆盖 add-to-cart.js,因此可能需要合并该文件的未来更新。

在functions.php中

// display add-on fields in woocommerce_after_shop_loop_item_title
add_action( 'woocommerce_after_shop_loop_item_title', array($GLOBALS['Product_Addon_Display'], 'display'), 10);

// Our custom cart JS to allow for product add-on fields on product archive
add_action( 'wp_enqueue_scripts', 'load_woo_scripts', 9 );
function load_woo_scripts() { 
    wp_enqueue_script( 'wc-add-to-cart', get_template_directory_uri() . '/js/add-to-cart.js', array( 'jquery' ), WC_VERSION, true );
}

复制/assets/add-to-cart.js从 woocommerce 插件文件夹中,并将其添加到中引用的文件夹中load_woo_scripts。然后在后面添加以下内容var date = {声明(第 21 行)。

// =========================================================================
// ADD PRODUCT ADD-ON FIELDS TO SUBMISSION (to allow from product archive)
// Store name and value of fields in object.
var addonfields = {}; 
$(this).parent().find(".after-shop-loop-item-title :input").each(function() { 
    addonfields[this.name] = $(this).val(); 
}); 

// Merge new fields and existing data
data = $.extend(data, addonfields);

// Testing: final value of data
console.log( data );
// =========================================================================

这会添加所有输入字段的名称和值.after-shop-loop-item-title分区我已将此 div/类添加到我的主题中woocommerce/content-product.php模板:

<?php do_action( 'woocommerce_before_shop_loop_item' ); ?>
<h2><?php the_title(); ?></h2>
<div itemprop="description">
    <?php the_content(); ?>
</div>

<div class="after-shop-loop-item-title">
    <?php
        /**
         * woocommerce_after_shop_loop_item_title hook
         *
         * @hooked woocommerce_template_loop_rating - 5
         * @hooked woocommerce_template_loop_price - 10
         */
        do_action( 'woocommerce_after_shop_loop_item_title' );
    ?>  
</div>

<?php do_action( 'woocommerce_after_shop_loop_item' ); ?>

请注意,就我而言,我仅使用文本区域和文本输入。两者都不会改变价格。扩展的更高级使用可能需要更多工作。

我真的希望 WooCommerce 将来能让这一切变得更容易......

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

WooCommerce:如何显示“产品附加组件”扩展中的字段? 的相关文章

  • 将按钮文本放在一行上

    我的按钮文本在 safari 中显示在一行上 即使在初次单击后 但是在 google chrome 上 当您第一次到达该按 钮时 我的按钮将显示在一行上 但是当您浏览更多帖子并再次遇到 加载更多 按钮时 文本搞砸了 这只发生在谷歌浏览器上
  • 如何纠正这个非法字符串偏移?

    我收到此错误 警告 第 32 行 home mysite public html wp content themes evento lib php extra class php 中的非法字符串偏移 type 我意识到文件中的这部分代码是错
  • 在 WooCommerce 中添加到购物车之前清空购物车

    我正在使用 WP 作业管理器和 Woo Subscriptions Now 最初 我选择了一个套餐 Woo Subscription 然后我添加了所有细节 但没有提交 回到网站 所以要再次购买 我需要选择一个套餐 于是我选择了套餐并填写了详
  • WordPress 自定义帖子类型未显示在搜索结果中

    我在 WordPress 中遇到自定义帖子类型 测验 和搜索的问题 自定义帖子类型未显示在我的搜索结果页面中 我的搜索结果中仅显示默认的帖子内容 以下是我使用的代码 函数 php函数create posttype register post
  • wp_unregister 和 wp_enqueue

    有人建议我使用 wp unregister 和 wp enqueue 将 wordpress jquery 库替换为 google 托管的库 因为 wordpress 有一些问题 然而 当我尝试将这些插入我的 WordPress 网站时 它
  • 根据类别 woocommerce 更改同一产品的默认变体值

    我正在研究一种根据其所属类别显示同一产品的默认变体值的方法 例如 我出售一张带有蓝色和红色选项的卡 当用户进入 一 类别时 我希望默认值为蓝色 如果他属于第二类 则该值将为红色 我发现了一个钩子woocommerce product def
  • 新的 Wp_Query() 或 pre_get_posts() 来查看自定义帖子类型的所有帖子?

    我有一个存档模板文件 显示自定义帖子类型人员的所有帖子 称为 archive personnel php 这是文件的开头
  • 在 Woocommerce 存档页面中显示产品星级评定和价格下方的计数 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在 woocommerce 存档页面中 我想将评级移至价格下方 那可能吗 我怎样才能做到呢 这是我想要的 任何帮助表示赞赏 My 网站
  • iPad Safari Web Inspector 在页面加载时崩溃

    我有一个用 WordPress 制作的以视频为中心的网站 当我们在 iPad 上测试网站时 我们将其连接到 Mac 笔记本电脑并打开 safari 开发人员工具来检查是否有任何错误等 我们的主页上一切正常 但当我们转到我们添加的任何视频帖子
  • 自定义 WordPress 画廊 html 布局

    当使用默认媒体上传器在 WordPress 中创建图像库时 WordPress 将图像包装在一堆 HTML 标记中 如何在生成之前覆盖它 以便我可以输出所需的标记并更改创建图库布局的方式 目前 WordPress 生成的代码如下 div d
  • 包含 WordPress 之外的 WordPress 内容

    我正在寻找构建 WordPress 网站的移动版本 并将其大部分内置于静态文件中 但我试图从运行移动网站的外部 PHP 文件内部访问 WordPress 内容 如何在不手动编写 SQL 查询的情况下访问循环或数据库 Edit 为了澄清一下
  • 按值或 ID 选择更多复选框

    我有这段代码 我想在其中创建一个切换按钮来选择 2 个或更多复选框 例如 意大利和德国 我正在尝试这段代码 但我无法让它工作 document on click checkbox button function e var checks i
  • 将延期交货库存状态添加到 Woocommerce 可变产品下拉列表中

    我想在下拉菜单中显示可变产品的库存状态 包括 缺货 因为我网站上的大多数产品都缺货 而不是 缺货 我已经尝试过答案如何将变体库存状态添加到 Woocommerce 产品变体下拉列表中 https stackoverflow com ques
  • 根据推荐链接自动选择联系表单 7 中的字段

    我一直在使用 Aurovrata 的这个答案 WordPress联系表单7根据url动态选择下拉字段 https stackoverflow com questions 63251548 wordpress contact form 7 d
  • WooCommerce 中的分页

    我使用这个短代码在页面上显示产品的类别 但是当我们使用它时 它不会显示分页 因为我们的类别中有很多产品 我们使用以下代码 product category category snowpeak per page 12 columns 4 or
  • MySQL/PHP 插入同一行两次

    我不明白为什么这段代码会插入同一行两次 我已经将其精简为以下代码 它被插入的 MySQL 表中有 10 列 但即使查询中提到了所有这些列 它仍然插入 电子邮件受保护 cdn cgi l email protection 分两行 具有单独的主
  • 使用WordPress get_results()数据库函数是否可以防止sql注入

    似乎找不到答案 但想知道以下对数据库的查询是否容易受到 SQL 注入的攻击 searchPostResults wpdb gt get results querySearchVals OBJECT 这是使用的查询 global wpdb o
  • 如何在 WordPress 中按标题获取帖子?

    Wordpress 3 0 我想通过使用将特定帖子的内容放入页面中title帖子的 据我所知 我不能直接使用get post 我可以假设暴力方式可能是什么 但我怀疑还有更优雅的方式吗 get page by title id OBJECT
  • Wordpress/Woocommerce:以编程方式创建订单后,我还想以编程方式发送发票...如何?

    所以 我的网站涉及一个预订系统 流程如下 客人选择预订产品的日期 地点 提交请求后 系统会向主机发送一条消息以供审核 如果接受 我希望订单由客人支付 我的问题在这里 我已成功创建订单 理想情况下 我希望能够将客人发送到他们的 购物车 页面
  • 根据产品变体术语将收件人添加到 Woocommerce 电子邮件通知

    我创建了一个 Woocommerce 插件并要求它做两件事 根据购物车中的产品变体 向特定电子邮件地址发送通知消息 电子邮件必须仅包含相关产品 不得包含其他属性的产品 例如 产品 A 具有名为 Chef 的属性 其中 Chef one 和

随机推荐

  • SVN:发布分支和外部?

    我们有两个针对同一客户的网站 主 www 网站和另一个位于单独服务器上的电子商务网站 它们使用共享的代码部分 各种功能 样式 javascript 等 目前 我们通过将共享代码作为 SVN 中的单独项目 在同一存储库中 并使用 svn ex
  • Python3中如何设置文件权限?

    Python 自己的文档非常简洁地介绍了如何使用类似的函数os fchmod os chmod 我对这样的数字感到困惑777和类似的表达方式stat S IWRITE stat S IEXEC 是什么mode 0o777我在一些函数中看到o
  • 首先在 EF 4.1 代码中映射关联表

    我不确定如何映射下面的表格EF 4 1 code first以及我需要哪些对象来代表表格 我如何检索产品规格列表 我目前只有一个Product class Products Table Id Name IsActive ProductSpe
  • 如何正确配置 Cocoa Pods 项目?

    在我过去的一些项目中 Cocoa Pods 的配置不正确 这会导致一些不良情况 例如项目导航器中需要重复的 Cocoa Pod 项目 或者必须将 pod 文件签入版本控制 如何正确安装 Cocoa Pods 并验证我的目录结构和项目导航器结
  • 如何使用 API Gateway 调用 AWS Step Function

    如何使用 API Gateway POST 请求以及 Step Function 的请求 JSON 负载调用 AWS Step Function 1 创建阶跃函数 非常明显 我想如果您正在阅读本文 您就知道该怎么做 否则 您可以查看此处的文
  • 使用 LINQ 生成填充随机数的随机大小集合

    我现在正在学习 LINQ 我想知道是否有任何方法可以使用它来实际生成列表 而不仅仅是查询已经生成的列表 所以我有以下代码 使用 for 循环来生成随机大小的整数列表并用随机数填充它 有没有办法将其转换为 LINQ var ret new L
  • 当另一个表中存在匹配行时更新行

    仅当另一个表中存在匹配行时 对于主表中该列当前为空的所有行 我才需要将表上的字段更新为 true 这是我想要实现的目标的描述 UPDATE LenqReloaded dbo Enquiry A SET ResponseLetterSent
  • 限制 .net 应用程序的内存使用

    有没有办法限制 NET 应用程序使用的内存量 看看进程调控器 http lowleveldesign wordpress com 2013 11 21 set process memory limit with process govern
  • 如何在NumericUpDown控件中显示空值?

    我有一个 Windows 窗体应用程序 其中包括NumericUpDown控制与Minimum and Maximum相应地将值设置为 50 80 并执行步骤 1 当表单加载时NumericUpDown显示 50 我知道NumericUpD
  • r - 将输出从 sf::st_within 转换为向量

    我尝试使用 R 中的 sf 包来查看 sf 对象是否在另一个 sf 对象内st within功能 我的问题是这个函数的输出是稀疏几何二进制谓词 sgbp我需要一个向量作为输出 以便我可以使用dplyr之后打包进行过滤 这是一个简化的示例 o
  • VS2017 具有新的 getter/setter 语法:如何在 setter 中编写多行?/ [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我使用的是 NET Framework 4 5 2 VS2017 VS2017 为 getter 和 setter 提供了新的语法 现在带有 getter setter 的属性如下所示
  • 提交成功但上传无法在合并表单中使用

    在尝试将提交和上传合 并到一种表单中时 我在上传时遇到问题 但对于提交表单来说没有问题 jQuery Ajax oqcsubmit click function if oqc valid var params oqc serialize a
  • 如何在 R Markdown 中选择特定选项卡?

    我需要从中选择一个选项卡tabset在 R Markdown 文档中 使用 Shiny 运行时 我按照中的例子如何在Shiny中选择特定的tabPanel 并尝试将其适配为 R Markdown 我添加了ids 到选项卡集 选项卡 并在up
  • 对 Python argparse 参数组重新排序

    我在用着argparse我有一个自定义参数组required arguments 有什么方法可以更改帮助消息中参数组的顺序吗 我认为将必需的参数放在可选参数之前更符合逻辑 但没有找到任何文档或问题来提供帮助 例如 改变这个 usage fo
  • 将 csv 文件导入 Python 中的矩阵/数组

    我正在尝试将包含字符串和数字数据矩阵的大 csv 文件导入到 Python 中的数组 矩阵中 在 MATLAB 中 我曾经加载文件并将其简单地分配给一个矩阵 但在 Python 中似乎有点棘手 有人可以建议吗 我对 Python 还很陌生
  • 使用 msbuild 删除空目录

    如何递归处理路径 以便处理完成后路径下不存在空目录 例如 假设我们有C Dir1 Dir2 Dir3并且这些目录中都没有文件 结果应该是删除所有三个目录 我想在不使用自定义任务的情况下完成此任务 像这样的东西应该可以工作 但没有检查计算数千
  • 在自定义 UITableViewCell 中管理 UITextFields 的委托

    因此 我环顾四周 似乎没有任何内容可以准确解释执行此操作的正确方法 我在自定义 UITableViewCell 中有 7 个 UITextField 我的问题是 管理这些 UITextFields 委托的正确方法是什么 由于自定义单元格在技
  • PyCharm 不在主窗口上运行配置

    PyCharm 社区版在 Ubuntu 18 04 上如下所示 请注意 运行配置下拉列表不在我的主窗口上 搜索了文档 设置 视图 但无法弄清楚如何将其附加到主视图 还有其他人有这个问题吗 谢谢 LazyOne 你的回答让我注意到了导航栏 但
  • 如何使用淡入淡出动画设置屏幕亮度?

    是否可以在 iOS 5 1 上以动画方式显示屏幕亮度变化 我在用 UIScreen mainScreen setBrightness float 但我认为突然的改变很难看 当我尝试使用正在进行的先前动画将动画设置为另一个值时 我遇到了接受的
  • WooCommerce:如何显示“产品附加组件”扩展中的字段?

    我正在使用 WooCommerce 的 产品附加组件 1 扩展 它允许产品的自定义字段 这会自动显示在单个产品模板上 通过对单一产品模板的一些尝试和错误 它似乎挂在了某个地方woocommerce single product summar