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

如何通过子主题functions.php正确调整WooCommerce主商店页面描述的显示位置

如何通过子主题functions.php正确调整WooCommerce主商店页面描述的显示位置

我明白你现在的困扰——想把WooCommerce主商店页面的描述从顶部移到产品下方,用子主题的functions.php实现,但之前的代码没生效,导致描述重复显示,还不想用CSS隐藏影响SEO。咱们来一步步解决这个问题。

问题出在哪?

你之前把remove_action放在了add_shop_page_description函数里,而这个函数是绑定在woocommerce_after_main_content钩子上的。但WooCommerce默认的商店描述是在更早执行的woocommerce_archive_description钩子里输出的,等你的移除代码运行时,顶部的描述已经被打印出来了,所以根本没起到移除的作用,自然就出现了上下重复的情况。

正确的解决方案

咱们要换个思路:先在足够早的时机移除默认的描述输出动作,再在产品下方的钩子上添加自定义的描述输出。直接把以下代码放到子主题的functions.php文件里即可:

// 移除默认的商店页面描述输出(在初始化阶段执行,确保早于默认输出)
add_action( 'init', 'remove_default_shop_description' );
function remove_default_shop_description() {
    // 移除分类存档的描述输出(避免影响产品分类页)
    remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
    // 移除主商店页面的默认描述输出
    remove_action( 'woocommerce_archive_description', 'woocommerce_product_archive_description', 10 );
}

// 在产品列表下方添加商店页面描述
add_action( 'woocommerce_after_main_content', 'add_shop_description_below_products' );
function add_shop_description_below_products() {
    // 只针对主商店页面执行
    if ( is_shop() ) {
        // 用WooCommerce推荐的最新函数获取商店页面ID
        $shop_page_id = wc_get_page_id( 'shop' );
        // 获取商店页面的内容(描述)
        $shop_description = get_the_content( null, false, $shop_page_id );
        
        // 只有当描述不为空时才输出
        if ( ! empty( $shop_description ) ) {
            echo '<div class="woocommerce-shop-description">' . apply_filters( 'the_content', $shop_description ) . '</div>';
        }
    }
}

代码关键点说明

  • 把移除动作绑定到init钩子:这个钩子执行时间足够早,能在默认描述输出前就取消对应的动作,彻底避免顶部显示描述。
  • 替换旧函数:用wc_get_page_id替代过时的woocommerce_get_page_id,这是WooCommerce官方推荐的写法,兼容性更好。
  • 空值判断:添加! empty( $shop_description )的判断,避免商店页面没有设置描述时输出空的HTML容器。
  • 自定义CSS类:给描述容器加了woocommerce-shop-description类,方便你后续根据需要调整样式,不用额外找选择器。

如果你的商店页面同时也是某个产品分类的存档页,可以再微调is_shop()的判断条件,但绝大多数情况下这个判断已经足够准确了。

备注:内容来源于stack exchange,提问作者Connor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 09:49:32