当前位置:首页 > 文章列表 > 文章 > php教程 > WooCommerce价格显示与短代码使用教程

WooCommerce价格显示与短代码使用教程

2025-12-07 21:57:35 0浏览 收藏
推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

一分耕耘,一分收获!既然都打开这篇《优化WooCommerce价格显示与短代码使用教程》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新文章相关的内容,希望对大家都有所帮助!

优化 WooCommerce 产品价格显示与自定义短代码集成

本教程详细指导如何在 WooCommerce 中修改产品价格的显示逻辑,通过过滤器实现全局价格乘以特定系数的展示,并创建可自定义的短代码来灵活展示特定产品的详细信息(包括计算后的价格)。这两种方法提供了对产品价格展示的强大控制力,适用于不同场景下的需求。

在 WooCommerce 中,有时我们需要对产品价格进行额外的计算,例如乘以一个折扣系数、税率或者其他自定义因子,并将其显示给用户。同时,我们也可能需要在网站的特定位置,如文章或页面中,以自定义的布局展示特定产品的详细信息,包括这些经过计算的价格。本教程将介绍两种实现方式:一种是利用 WooCommerce 过滤器全局修改价格显示,另一种是创建自定义短代码来灵活展示产品详情。

方法一:全局修改产品价格显示(使用 woocommerce_get_price_html 过滤器)

如果你希望在网站前端所有显示产品价格的地方(例如产品页面、商店页面、购物车等),都自动应用一个乘法计算,那么使用 woocommerce_get_price_html 过滤器是最佳选择。这个过滤器允许你在价格 HTML 被生成之前对其进行修改。

实现原理: 通过挂载到 woocommerce_get_price_html 过滤器,我们可以在 WooCommerce 生成产品价格的 HTML 字符串之前,获取原始产品价格,对其进行计算(例如乘以 0.2),然后将计算后的价格重新格式化为 HTML 字符串返回。

代码示例:

将以下代码添加到你的子主题的 functions.php 文件中,或者通过自定义插件添加。

/**
 * @description    全局修改 WooCommerce 产品价格显示
 * @compatible    WooCommerce 4.1+
 */
add_filter( 'woocommerce_get_price_html', 'woo_alter_price_display', 9999, 2 );

function woo_alter_price_display( $price_html, $product ) {
    // 确保只在前端生效,避免影响后台管理界面
    if ( is_admin() ) {
        return $price_html;
    }

    // 如果产品没有设置价格,则直接返回原始HTML
    if ( '' === $product->get_price() ) {
        return $price_html;
    }

    // 获取原始产品价格
    $price = $product->get_price();

    // 根据需求进行价格计算,例如乘以 0.2
    $updated_price = $price * 0.2; // 将价格乘以 0.2

    // 使用 wc_price() 函数将计算后的价格格式化为HTML字符串
    $price_html = wc_price( $updated_price );

    return $price_html;
}

代码解析:

  • add_filter( 'woocommerce_get_price_html', 'woo_alter_price_display', 9999, 2 );:将 woo_alter_price_display 函数挂载到 woocommerce_get_price_html 过滤器上。9999 是优先级,确保我们的修改在其他插件之后执行;2 表示函数接受两个参数 ($price_html 和 $product)。
  • is_admin():这是一个重要的检查,确保此价格修改仅应用于网站前端,而不会影响 WooCommerce 后台管理界面的价格显示。
  • $product->get_price():获取产品的原始数字价格。
  • $updated_price = $price * 0.2;:这是进行价格计算的核心部分。你可以根据实际需求修改 0.2 这个乘数。
  • wc_price( $updated_price ):这是一个 WooCommerce 辅助函数,用于将数字价格格式化为带有货币符号和正确小数位的 HTML 字符串。
  • 你也可以根据用户角色(例如 wc_current_user_has_role( 'customer' ))来决定是否应用价格修改,以实现更复杂的定价策略。

注意事项:

  • 此方法会影响所有调用 get_price_html() 函数来显示价格的地方,包括但不限于产品详情页、商品列表、购物车页面等。
  • 确保你的乘数(例如 0.2)符合业务逻辑。
  • 将代码放置在子主题的 functions.php 文件中,可以避免主题更新时代码丢失。

方法二:创建自定义短代码显示特定产品详情(包含计算后的价格)

如果你需要在特定的文章、页面或自定义模板区域中,灵活地展示某个产品的详细信息,包括其经过计算的价格,那么创建一个自定义短代码是更合适的选择。这种方法允许你通过短代码属性指定产品 ID,从而实现高度定制化的展示。

实现原理: 创建一个短代码函数,该函数接收 product_id 作为属性。在函数内部,根据传入的 product_id 获取产品对象,然后提取产品信息(如名称、简介、图片等),并对价格进行计算。最后,将这些信息组合成 HTML 结构并返回。

代码示例:

将以下代码添加到你的子主题的 functions.php 文件中,或者通过自定义插件添加。

/**
 * @description    创建自定义短代码显示特定 WooCommerce 产品详情
 */
function woo_product_details_shortcode( $atts = array() ) {
    // 解析短代码属性,设置默认值
    $atts = shortcode_atts( array(
        'product_id' => 0, // 默认产品ID为0
    ), $atts, 'product_detail' );

    $product_id = intval( $atts['product_id'] ); // 确保 product_id 是整数

    if ( $product_id > 0 ) {
        $product = wc_get_product( $product_id );

        // 检查产品是否存在且有效
        if ( ! $product || ! $product->exists() ) {
            return '<p>指定的产品ID无效或产品不存在。</p>';
        }

        $html = '';

        $product_name              = $product->get_name();
        $product_short_description = $product->get_short_description(); 

        // 获取原始价格并进行计算
        $price = $product->get_price();
        $multiplication_factor = 0.2; // 价格乘数,例如 0.2
        $updated_price = $price * $multiplication_factor;
        $price_html = wc_price( $updated_price ); // 格式化计算后的价格

        // 获取产品图片
        $product_image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $product_id ), 'single-post-thumbnail' );
        $image_src = $product_image_url ? $product_image_url[0] : wc_placeholder_img_url(); // 如果没有图片,使用占位符

        // 构建产品详情的HTML结构
        $html .= '<div class="custom-product-card">';
        $html .= '<img src="' . esc_url( $image_src ) . '" alt="' . esc_attr( $product_name ) . '" data-id="' . esc_attr( $product_id ) . '" style="width:100%">';
        $html .= '<h2>' . esc_html( $product_name ) . '</h2>';
        $html .= '<p class="price">' . $price_html . '</p>'; // 显示计算后的价格
        $html .= '<p>' . wp_kses_post( $product_short_description ) . '</p>';
        $html .= '<p><a href="' . esc_url( site_url() . '?add-to-cart=' . $product_id . '&quantity=1' ) . '" class="button">加入购物车</a></p>';
        $html .= '</div>';

        return $html;
    }
    return ''; // 如果没有提供有效的 product_id,则不输出任何内容
}
add_shortcode( 'product_detail', 'woo_product_details_shortcode' );

代码解析:

  • add_shortcode( 'product_detail', 'woo_product_details_shortcode' );:注册名为 product_detail 的短代码,并将其与 woo_product_details_shortcode 函数关联。
  • shortcode_atts():用于处理短代码属性,确保 product_id 属性被正确解析,并提供默认值。
  • wc_get_product( $product_id ):根据产品 ID 获取 WooCommerce 产品对象。
  • $product->get_name()、$product->get_short_description():获取产品的名称和简短描述。
  • $updated_price = $price * $multiplication_factor;:与方法一类似,这里执行价格计算。
  • wp_get_attachment_image_src():获取产品特色图片的 URL。
  • HTML 结构:函数内部构建了一个简单的 HTML div 结构来展示产品信息。你可以根据自己的设计需求自由修改此结构和样式。
  • esc_url(), esc_attr(), esc_html(), wp_kses_post():这些是 WordPress 的安全函数,用于防止 XSS 攻击,确保输出内容安全。

短代码使用方法:

  1. 在 WordPress 编辑器中(文章、页面、自定义文章类型): 直接在内容区域输入短代码,并指定 product_id:

    [product_detail product_id = '1002']

    将 1002 替换为你想要展示的实际产品 ID。

  2. 在 PHP 模板文件(如主题文件)中: 你可以使用 do_shortcode() 函数来执行短代码:

    <?php echo do_shortcode('[product_detail product_id = '1002']'); ?>

    同样,将 1002 替换为实际的产品 ID。

注意事项:

  • 短代码的 product_id 属性是必需的。如果没有提供或提供了无效的 ID,短代码将不会显示内容或显示错误信息。
  • 短代码内部的 HTML 结构和 CSS 样式需要你根据网站主题进行调整,以确保显示效果一致。
  • 此方法非常适合在内容中嵌入特定产品推荐、特色产品展示等场景。

选择适合你的方法

  • 使用过滤器(方法一):当你需要对所有产品价格的显示进行统一的、全局的修改时,例如所有产品价格都需要在前端乘以一个固定系数。这种方法更自动化,无需在每个产品或页面中手动设置。
  • 使用短代码(方法二):当你需要在网站的特定区域(如文章、页面内容、自定义模板部分)灵活地展示特定产品的详细信息,并且可能需要自定义其布局和包含额外信息时。短代码提供了更大的灵活性和控制力。

实施建议与最佳实践

  1. 代码放置位置:强烈建议将所有自定义代码放置在子主题的 functions.php 文件中,或者创建一个自定义插件。直接修改父主题文件会导致主题更新时代码丢失。
  2. 错误处理:在短代码中,我们已经添加了对无效 product_id 的基本检查。在实际应用中,你可能需要更完善的错误处理和用户提示。
  3. 性能考虑:虽然这两个方法通常不会造成显著的性能问题,但如果你在页面上大量使用短代码(例如在一个循环中多次调用),可能会对页面加载速度产生轻微影响。
  4. 缓存兼容性:如果你的网站使用了缓存插件,请确保在修改价格逻辑后清除缓存,以确保用户看到的是最新的价格。
  5. 安全性:在构建短代码的 HTML 输出时,始终使用 WordPress 提供的安全函数(如 esc_url()、esc_html()、wp_kses_post() 等)来清理和转义数据,以防止潜在的安全漏洞。

总结

通过本教程介绍的两种方法,你可以灵活地控制 WooCommerce 产品价格的显示逻辑。无论是通过 woocommerce_get_price_html 过滤器实现全局价格修改,还是通过自定义短代码实现特定产品详情的定制化展示,你都能够根据自己的业务需求,为用户提供更精准、更具吸引力的产品信息。选择最适合你场景的方法,并结合最佳实践进行实施,将有效提升你的 WooCommerce 商店的用户体验。

到这里,我们也就讲完了《WooCommerce价格显示与短代码使用教程》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

Windows11平板模式怎么打开?Windows11平板模式怎么打开?
上一篇
Windows11平板模式怎么打开?
蛙漫2官网地址及漫蛙漫画网页版入口
下一篇
蛙漫2官网地址及漫蛙漫画网页版入口
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ChatExcel酷表:告别Excel难题,北大团队AI助手助您轻松处理数据
    ChatExcel酷表
    ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
    3225次使用
  • Any绘本:开源免费AI绘本创作工具深度解析
    Any绘本
    探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
    3439次使用
  • 可赞AI:AI驱动办公可视化智能工具,一键高效生成文档图表脑图
    可赞AI
    可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
    3469次使用
  • 星月写作:AI网文创作神器,助力爆款小说速成
    星月写作
    星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
    4578次使用
  • MagicLight.ai:叙事驱动AI动画视频创作平台 | 高效生成专业级故事动画
    MagicLight
    MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
    3847次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码