You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce技术问题:如何将Shortcode用作产品图片?

在WooCommerce中用短代码做产品图片的实现方法

嘿,WooCommerce默认确实没提供直接把短代码设为产品主图/图库图片的功能,但有几个挺简便的办法能搞定这个需求,下面给你详细说下:

方法一:用WooCommerce钩子替换产品图片输出

你可以借助woocommerce_single_product_image_thumbnail_html或者woocommerce_product_get_image这类钩子,在产品图片渲染的时候把默认内容替换成短代码的输出。

举个例子,假设你的目标短代码是[custom_product_img],直接在主题的functions.php里加这段代码就行:

add_filter('woocommerce_single_product_image_thumbnail_html', 'replace_product_image_with_shortcode', 10, 2);
function replace_product_image_with_shortcode($html, $post_id) {
    // 你还可以加个条件判断,比如只替换特定产品ID的图片
    // if ($post_id == 123) { ... }
    return do_shortcode('[custom_product_img]');
}

如果要替换产品主图的话,用woocommerce_product_get_image钩子更精准:

add_filter('woocommerce_product_get_image', 'replace_main_product_image_with_shortcode', 10, 6);
function replace_main_product_image_with_shortcode($html, $product, $size, $attr, $placeholder, $image_id) {
    // 比如只替换某个产品分类下的图片
    // if (has_term('your-category', 'product_cat', $product->get_id())) { ... }
    return do_shortcode('[custom_product_img]');
}

方法二:自定义短代码来输出产品图片(反向思路)

如果你的需求是用短代码来调用并展示产品图片,那可以自己写个短代码来实现。比如:

add_shortcode('product_img', 'render_product_image_via_shortcode');
function render_product_image_via_shortcode($atts) {
    // 设置短代码的默认参数
    $atts = shortcode_atts(array(
        'id' => get_the_ID(), // 默认当前产品ID
        'size' => 'woocommerce_single' // 默认用产品主图尺寸
    ), $atts);
    
    $product = wc_get_product($atts['id']);
    if (!$product) return '';
    
    // 返回产品图片的HTML
    return $product->get_image($atts['size']);
}

之后你就能在产品描述、侧边栏或者其他支持短代码的地方,用[product_img id="123"]来显示指定产品的图片了。

方法三:用自定义字段灵活控制(适合多产品场景)

如果需要给不同产品设置不同的短代码图片,可以给产品加个自定义字段,比如product_img_shortcode,然后在模板里读取并渲染。

  1. 先在产品编辑页添加自定义字段(可以用ACF插件快速创建,也可以手动在“自定义字段”模块里添加)
  2. 找到主题里的产品图片模板文件(一般是single-product/product-image.php),找到输出默认图片的位置,替换成这段代码:
$custom_shortcode = get_post_meta(get_the_ID(), 'product_img_shortcode', true);
if (!empty($custom_shortcode)) {
    echo do_shortcode($custom_shortcode);
} else {
    // 如果没设置自定义短代码,就显示默认产品图片
    woocommerce_show_product_images();
}

⚠️ 注意:修改主题文件之前,最好先创建并使用子主题,不然主题更新后你的修改就没啦。另外,如果你的短代码本身就是用来输出图片的(比如来自某个图片插件的短代码),上面的方法都能直接生效。

内容的提问来源于stack exchange,提问作者user3493534

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:32:28