在WooCommerce商店和归档页面产品价格后添加自定义内容

在woocommerce商店和归档页面产品价格后添加自定义内容

本教程详细介绍了如何在WooCommerce商店和产品归档页面(非单品页)的产品价格下方,通过使用WordPress和WooCommerce的动作钩子,插入自定义PHP内容。文章将提供具体的代码示例,并解释其工作原理,帮助开发者轻松实现页面内容的灵活扩展。

概述:利用动作钩子扩展WooCommerce显示

在WooCommerce中,我们经常需要对默认的产品显示布局进行调整,例如在产品价格下方添加额外的信息,如作者电话、商品库存状态或自定义标签等。WooCommerce提供了丰富的动作钩子(Action Hooks),允许开发者在特定位置注入自定义代码,而无需直接修改核心模板文件。这种方法不仅安全,而且在主题或插件更新时能够保持修改的有效性。

本教程的目标是在WooCommerce的商店主页、分类页和标签归档页等产品列表页面中,于每个产品价格的下方添加一段自定义的PHP内容。这里以输出产品作者的电话信息为例,但其原理适用于任何希望添加的HTML或PHP内容。

实现步骤:在functions.php中添加代码

要实现这一功能,我们需要将自定义代码添加到WordPress主题的functions.php文件中。强烈建议使用子主题(Child Theme)的functions.php文件,以避免在主题更新时丢失您的修改。

访问主题文件:通过WordPress后台的“外观” -> “主题文件编辑器”,或使用FTP/cPanel文件管理器,导航到您的主题(或子主题)目录下的functions.php文件。

添加自定义函数和钩子:将以下代码片段添加到functions.php文件的末尾:

<?php/** * 在WooCommerce商店和归档页面的产品价格后添加自定义内容 */function woocommerce_after_product_price_custom_content() {    // 在这里放置您希望显示的代码    // 示例:显示产品作者的电话元数据    echo '

'; // 可以添加自定义的HTML标签和类名以便后续样式控制 the_author_meta( 'phone' ); // 假设作者的电话存储在'phone'元字段中 echo '

'; // 您也可以输出其他内容,例如: // echo '更多信息'; // echo do_shortcode('[your_custom_shortcode]'); // 如果需要输出短代码}// 将自定义函数挂载到 'woocommerce_after_shop_loop_item' 动作钩子// 'woocommerce_after_shop_loop_item' 钩子在每个产品在循环中显示后触发// 10 是优先级,数字越小越先执行// 0 是接受的参数数量add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_after_product_price_custom_content', 10, 0 );?>

代码解析

woocommerce_after_product_price_custom_content() 函数:这是一个自定义的PHP函数,它包含了您希望在产品价格下方显示的所有逻辑和内容。

the_author_meta( ‘phone’ );:这是一个WordPress函数,用于获取并显示当前文章(或产品,因为WooCommerce产品本质上是自定义文章类型)作者的指定元数据。这里的’phone’是元数据键名,您需要确保您的用户(或产品作者)资料中存在名为phone的自定义字段,并且其中存储了电话号码。echo ‘

‘; 和 echo ‘

‘;:这些是HTML标签,用于包裹输出的内容,方便您后续通过CSS进行样式设计。您可以根据需要修改或删除这些标签。

add_action() 函数:这是WordPress的核心函数,用于将自定义函数与特定的动作钩子关联起来。

‘woocommerce_after_shop_loop_item’:这是WooCommerce提供的一个动作钩子。它在每个产品项在产品循环(即商店页面、分类页面、标签页面等)中被完全渲染之后触发。这意味着您的自定义内容将出现在产品价格以及任何其他默认内容之后。’woocommerce_after_product_price_custom_content’:这是您定义的自定义函数的名称。10:这是函数的优先级。数字越小,函数执行得越早。默认优先级是10。0:这是函数接受的参数数量。woocommerce_after_shop_loop_item 钩子不传递任何参数,因此这里设置为0。

注意事项与扩展

子主题的重要性: 再次强调,务必在子主题的functions.php中添加代码。如果直接修改父主题,主题更新将覆盖您的所有修改。自定义内容: the_author_meta( ‘phone’ ); 只是一个示例。您可以替换为任何有效的PHP代码或HTML内容。例如:显示自定义字段:echo get_post_meta( get_the_ID(), ‘_my_custom_field’, true );显示静态文本:echo ‘免费送货!’;根据条件显示内容:

if ( get_post_meta( get_the_ID(), '_is_featured_product', true ) ) {    echo '? 热门商品';}

样式调整: 添加内容后,您可能需要通过CSS来调整其显示样式,例如字体大小、颜色、边距等。您可以使用在代码中添加的HTML类名(如product-author-phone)来定位和美化这些内容。将CSS代码添加到主题的style.css文件中(同样,子主题优先)。钩子的选择: 理解不同WooCommerce钩子的作用至关重要。woocommerce_after_shop_loop_item 适用于产品列表页面的每个产品项之后。如果您需要在单品页面添加内容,则需要使用不同的钩子,例如woocommerce_single_product_summary或woocommerce_after_add_to_cart_button等。性能考虑: 避免在自定义函数中执行过于复杂的数据库查询或耗时操作,这可能会影响网站性能。

总结

通过利用WooCommerce提供的动作钩子,我们可以非常灵活且安全地在不修改核心模板文件的情况下,向商店和归档页面添加自定义内容。本教程以在产品价格后添加作者电话为例,展示了woocommerce_after_shop_loop_item钩子的强大功能。掌握这种扩展方式,将大大提升您定制WooCommerce网站的能力。

以上就是在WooCommerce商店和归档页面产品价格后添加自定义内容的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1265301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何使用Scoop安装PHP环境 Scoop工具安装PHP的方式介绍
上一篇 2025年12月10日 09:01:57
如何在Windows 11配置PHP环境日志记录 PHP日志输出路径与等级设置
下一篇 2025年12月10日 09:02:29

相关推荐

  • Jedis jsonGet 方法返回字节数组值末尾出现 .0 的处理策略

    当使用jedis客户端的`jsonget`方法从redis获取json数据时,如果其中包含字节数组(如xml字符串的字节表示),可能会因底层json库(如gson或org.json)的默认行为,导致数字被统一上转型为`double`类型,从而在输出中显示`.0`后缀。本文将深入探讨此问题产生的原因,…

    2026年9月21日
    200
  • Laravel与Vue.js/React前端框架集成

    laravel可以与vue.js或react集成。1) 使用命令“php artisan preset vue”或“php artisan preset react”设置开发环境。2) 在laravel视图中引入编译后的javascript文件。3) 通过laravel的api路由和前端框架的htt…

    2026年9月21日
    000
  • mysql索引的类型和作用有哪些

    MySQL常见索引类型包括:1. 普通索引用于加速查询;2. 唯一索引确保列值唯一;3. 主键索引为唯一非空且自动创建聚簇索引;4. 聚簇索引决定数据物理存储顺序,每表仅一个;5. 非聚簇索引保存主键值,需回表查询;6. 覆盖索引避免回表提升性能;7. 联合索引遵循最左前缀原则;8. 全文索引支持文…

    2026年9月21日
    000
  • Linux如何查看sudo执行的历史记录

    Linux如何查看sudo执行的历史记录Linux如何查看sudo执行的历史记录Linux如何查看sudo执行的历史记录Linux如何查看sudo执行的历史记录

    要追溯sudo执行的命令,需查看系统日志或配置sudo日志;在Ubuntu/Debian中查/var/log/auth.log,CentOS/RHEL中查/var/log/secure,或使用journalctl _COMM=sudo筛选;通过配置/etc/sudoers中的Defaults log…

    2026年9月21日 用户投稿
    300
  • 如何制作抖音点单小程序:全面指南与实用技巧

    引言: 随着移动互联网的飞速发展,抖音已不仅仅是短视频平台,更成为商家连接用户的重要入口。越来越多企业开始关注抖音点单小程序的搭建,以提升服务效率和用户体验。本文将为您系统讲解抖音点单小程序的制作流程,并分享实用技巧与真实案例,助您快速打造专属的小程序,实现流量变现与销售增长。 1. 明确核心需求与…

    2026年9月21日
    200
  • REDMI有史以来最强手机!K90 Pro Max这次真的强到爆

    REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆

    如果说redmi过去是“性价比之王”,那么这一次,它彻底进化成了“性能怪兽”。10月23日即将登场的redmi k90 pro max,不仅是品牌年度旗舰的压轴大戏,更是其历史上首款冠以“pro max”之名的巅峰之作。 这可以看作是REDMI向高端市场发起冲击的正式宣言。卢伟冰亲自放话:“给4K价…

    2026年9月21日 用户投稿
    300
  • Linux如何升级源码编译安装的软件

    Linux如何升级源码编译安装的软件Linux如何升级源码编译安装的软件Linux如何升级源码编译安装的软件Linux如何升级源码编译安装的软件

    升级源码编译软件需手动操作,核心是卸载旧版后编译安装新版。1. 确认当前版本、路径及编译参数;2. 下载并解压新版本源码,核对完整性;3. 使用相同配置参数执行 ./configure 和 make 编译;4. 停止旧服务,执行 make install 覆盖文件;5. 验证版本与配置,启动服务并检…

    2026年9月21日 用户投稿
    100
  • Valkey 9.0.0 正式 GA,Linux 基金会维护的 Redis 分支

    由 linux 基金会主导维护的 redis 分支——开源内存数据库 valkey 9.0.0 正式发布,现已进入通用可用(ga)阶段。本次版本带来了多项关键性的性能提升与功能增强,重点聚焦于更高效的集群数据迁移、精细化的哈希字段管理能力,以及对大规模分布式部署场景的深度优化。 原子化槽位迁移(At…

    2026年9月21日
    100
  • 如何在Java中声明常量数组

    声明常量数组需用static final,但final仅保证引用不可变而非内容不可变。1. 基本类型数组可用static final声明,如public static final int[] DAYS_IN_MONTH = {31,28,…};引用不可改,但元素可修改。2. 为实现内容不…

    2026年9月20日
    100
  • Java从文本文件随机读取并打印指定行数内容

    本文旨在指导读者如何使用java程序从文本文件中高效地读取多组固定行数的内容(如诗歌),并随机选择其中一组进行打印。教程将详细介绍如何利用`files.readalllines`、`random`和`list.sublist`等核心api,实现文件的整体读取、随机索引的生成以及特定内容块的提取与输出…

    2026年9月20日
    100
  • mysql如何启用query cache

    MySQL 5.7及之前版本可通过配置启用Query Cache以提升读取性能,首先确认支持性:执行SHOW VARIABLES LIKE ‘have_query_cache’,若返回YES则可继续。接着在my.cnf或my.ini的[mysqld]段添加query_cach…

    2026年9月20日
    200
  • VSCode有哪些必备的插件?

    EditorConfig for VS Code统一代码风格,2. Prettier自动格式化多语言代码,3. ESLint检查JS/TS错误并集成Prettier,4. GitLens增强Git可视化,5. Path Intellisense补全文件路径,6. 括号高亮提升嵌套识别,7. Auto…

    2026年9月20日
    1000
  • Java从文本文件随机读取多行连续内容的教程

    本教程旨在指导java开发者如何高效地从文本文件中随机读取并打印指定数量(例如5行)的连续内容,尤其适用于处理结构化文本块(如诗歌)。我们将探讨如何避免仅读取文件开头固定行数的局限,通过将文件内容一次性加载到内存并结合随机数生成器来精确选取所需的文本块,从而实现真正的随机性与灵活性。 引言与问题分析…

    2026年9月20日
    200
  • RBAC(基于角色的权限控制)实现方案

    rbac重要,因为它通过角色管理权限,简化了权限管理,提高了系统安全和管理效率。实现rbac时:1.设计数据库结构,定义用户、角色、权限表及中间表;2.在代码中实现权限检查和角色、权限的动态管理;3.优化性能,防止权限泄露,管理角色膨胀。 在探讨RBAC(基于角色的权限控制)实现方案之前,让我们先来…

    2026年9月20日
    000
  • Android Activity与Fragment通信及视图访问的最佳实践

    本文旨在解决android开发中activity与fragment之间视图访问和数据通信的常见问题,特别是当使用bottom navigation activity模板时。我们将探讨为何不能直接在activity中访问fragment视图,并详细介绍如何利用fragment的生命周期方法(如`onv…

    2026年9月20日
    100
  • Redmi K70电池续航表现解析 Redmi K70充电优化技巧

    Redmi K70续航表现因使用习惯而异,重度使用亮屏5.5至6.5小时,日常通勤可撑一天;120W快充19分钟充满,建议随用随充、开启智能充电保护,并避免边充边玩大型游戏;通过开启自动亮度、降低分辨率至1.5K、限制后台高耗电应用可有效延长续航。 Redmi K70的续航到底怎么样,充电怎么用才最…

    2026年9月20日
    100
  • Java Swing:在类中管理 JFrame 实例的两种策略

    本文探讨在 java swing 应用程序中,如何有效地在不同方法中访问和管理 jframe 实例,避免 this 关键字的限制。我们将介绍两种核心策略:将 jframe 作为类成员变量,或使类直接继承 jframe。同时,强调组件应添加到 jframe 的内容面板,而非直接添加到 jframe。 …

    2026年9月20日
    000
  • 为什么VSCode的CSS代码提示不全?

    答案:VSCode CSS提示不全通常由配置或环境问题导致。1. 确保文件语言模式为CSS并正确关联扩展名;2. 更新VSCode以支持现代CSS特性,自定义属性需插件辅助;3. 安装IntelliSense、Tailwind或PostCSS等插件增强提示功能;4. 检查settings.json中…

    2026年9月20日
    000
  • Mockito中利用自定义ArgumentMatcher实现集合内参数匹配

    mockito并未提供直接的`in()`参数匹配器来判断方法参数是否包含在指定集合中。本文将详细介绍如何利用`intthat`(或`argthat`)结合lambda表达式或自定义匹配器,灵活实现对方法参数是否属于某个集合的条件匹配,从而在测试存根(stubbing)或验证(verification…

    2026年9月20日
    000
  • mysql如何优化初级项目数据库性能

    答案:初级项目数据库性能问题多源于设计和使用不当,优化需从表结构、索引、SQL语句和配置入手。应选用合适数据类型、避免NULL、拆分大字段;为常用查询字段建索引,遵循最左前缀原则,避免函数操作导致索引失效;禁止SELECT *,合理使用LIMIT,减少子查询与循环中执行SQL;开启慢查询日志,使用连…

    2026年9月20日
    000

发表回复

登录后才能评论
关注微信