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

如何在WooCommerce Memberships中强制the_content()返回完整内容?

嘿,这个场景我太熟悉了!WooCommerce Memberships对非会员用户截断内容到55词确实是默认行为,但咱们完全可以通过代码绕过这个限制,给你几个实用的方案:

方案1:直接移除Memberships的内容过滤钩子

Memberships是通过the_content过滤器来实现内容截断的,咱们直接把这个过滤器移除就行。把下面的代码放到子主题的functions.php文件或者自定义插件里:

add_action( 'init', 'remove_memberships_content_filter' );
function remove_memberships_content_filter() {
    // 先确认插件已加载,避免报错
    if ( function_exists( 'wc_memberships' ) ) {
        // 移除插件对the_content的截断过滤
        remove_filter( 'the_content', array( wc_memberships()->get_restrictions_instance(), 'filter_post_content' ), 10 );
    }
}

这段代码会在网站初始化时,移除Memberships添加的内容限制过滤器,让the_content()始终返回完整的文章内容。

方案2:直接获取原始文章内容(绕过所有过滤器)

如果你不想全局移除限制,只是在特定模板或场景下显示完整内容,可以直接从数据库获取原始内容,再手动应用必要的格式过滤:

// 直接从数据库获取未被过滤的原始文章内容
$full_content = get_post_field( 'post_content', get_the_ID() );
// 应用the_content的常规格式(比如解析短代码、换行等),但跳过Memberships的截断
echo apply_filters( 'the_content', $full_content );

这种方式更灵活,适合在自定义模板、侧边栏或者特定页面中单独使用。

方案3:修改截断长度为超大值(变相显示完整内容)

如果你只是想让截断长度足够大,让所有内容都能显示出来,而不是完全移除限制,可以用这个钩子调整截断长度:

add_filter( 'wc_memberships_restricted_content_excerpt_length', 'custom_memberships_excerpt_length' );
function custom_memberships_excerpt_length( $length ) {
    // 设置一个远大于常规文章字数的数值,比如9999
    return 9999;
}

这样插件会认为内容长度没超过限制,自然就会显示完整内容了。

⚠️ 小提醒:

  • 优先使用子主题或自定义插件存放代码,避免主题更新导致代码丢失。
  • 如果后续Memberships版本更新了钩子名称,可能需要微调代码,但目前这几个方案在最新版插件中都是有效的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:05