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

WordPress 6.2.2+WooCommerce产品分类描述展开收起功能故障求助

解决WooCommerce产品分类描述Read more/Read less功能失效问题

问题现象

  • 手动插入的<span id="dots"></span>、<span id="more">标签在更新后消失
  • "Read more"显示为纯文本,点击无交互效果

核心原因

WordPress编辑器(古腾堡/经典编辑器)会自动过滤或转义自定义HTML标签,导致手动插入的结构被清理;同时直接使用onclick可能因脚本加载顺序或冲突失效。


解决方法

1. 编辑器端调整(快速临时方案)

  • 古腾堡编辑器:点击顶部工具栏的「更多选项」(三个点图标),切换到「代码编辑器」模式,再插入完整的HTML结构,避免可视化模式自动清理标签。
  • 经典编辑器:进入「设置→写作」,取消勾选「使用可视化编辑器时自动纠正无效的HTML」,切换到「文本」模式插入代码。

2. 用PHP钩子自动生成结构(推荐长期方案)

无需手动编辑分类描述,通过主题functions.php添加代码自动处理:

// 自动为产品分类描述添加Read more/Read less结构
function woocommerce_category_read_more( $description ) {
    // 仅在前端分类页面生效
    if ( is_product_category() && ! is_admin() ) {
        $trim_length = 200; // 自定义需要截断的字符数
        if ( strlen( wp_strip_all_tags( $description ) ) > $trim_length ) {
            $trimmed_content = wp_trim_words( $description, $trim_length, '' );
            $remaining_content = substr( $description, strlen( $trimmed_content ) );
            
            $description = sprintf(
                '%s<span id="dots">...</span><span id="more">%s</span><span id="myBtn">Read more</span>',
                $trimmed_content,
                $remaining_content
            );
        }
    }
    return $description;
}
add_filter( 'term_description', 'woocommerce_category_read_more', 10, 1 );

注意:如果之前手动添加过标签,先清空分类描述里的自定义内容,让钩子自动生成结构。

3. 优化JS脚本(避免冲突)

修改read-more-script.js内容为无冲突写法,确保DOM加载完成后再绑定事件:

document.addEventListener('DOMContentLoaded', function() {
    const toggleBtn = document.getElementById('myBtn');
    if (!toggleBtn) return;

    toggleBtn.addEventListener('click', function() {
        const dots = document.getElementById('dots');
        const moreText = document.getElementById('more');
        
        if (dots.style.display === 'none') {
            dots.style.display = 'inline';
            this.textContent = 'Read more';
            moreText.style.display = 'none';
        } else {
            dots.style.display = 'none';
            this.textContent = 'Close Biography';
            moreText.style.display = 'inline';
        }
    });
});

4. 确保CSS和JS正确加载

  • 保留原有的JS引入代码,确认主题/js/read-more-script.js文件存在且路径正确。
  • 用钩子加载CSS(替代手动添加),添加到functions.php:
// 加载Read more功能的CSS样式
function enqueue_read_more_styles() {
    wp_add_inline_style( 'woocommerce-general', '#more { display: none; }' );
}
add_action( 'wp_enqueue_scripts', 'enqueue_read_more_styles' );

5. 允许HTML标签通过过滤

如果标签仍被清理,添加代码允许分类描述中的span标签:

// 允许分类描述使用带id和onclick的span标签
function allow_span_in_category_desc( $allowed_tags ) {
    $allowed_tags['span'] = array(
        'id' => array(),
        'onclick' => array(),
    );
    return $allowed_tags;
}
add_filter( 'term_description_allowed_tags', 'allow_span_in_category_desc' );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:37:40