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

如何针对购买EDD All Access的用户控制Elementor组件显隐或分配模板

针对EDD All Access购买用户实现Elementor组件/模板的显示控制

方案1:用EDD内置函数+Elementor原生动态可见性(无第三方插件)

Elementor Pro自带的动态可见性功能就能搞定,不用依赖容易出问题的第三方插件,步骤如下:

  1. 打开Elementor编辑器,选中要控制的引导购买组件(弹窗、模块都行)
  2. 切换到「高级」标签页,找到「动态可见性」(没看到的话确认Elementor Pro已激活)
  3. 点击「添加条件」,选「自定义条件」→「PHP条件」
  4. 在代码框里输入判断逻辑(记得替换成你的All Access产品ID,产品ID在EDD产品列表里能看到):
global $current_user;
if ( is_user_logged_in() ) {
    $product_id = 123; // 替换为你的All Access产品ID
    return edd_has_user_purchased( $current_user->ID, $product_id );
}
return false;
  1. 把可见性规则设为「条件不满足时显示」——因为代码返回true代表用户已购买,所以不满足条件的用户(未登录/未购买)就能看到引导组件,已购买的自动隐藏
  2. 保存设置后测试即可

如果要给已购买用户分配特定模板:

  • 打开页面的Elementor设置(底部的齿轮图标)
  • 找到「条件模板」,添加自定义PHP条件,用上面的代码,设置成「条件满足时加载指定模板」

方案2:自定义短代码控制组件显示

不想用Elementor的PHP条件的话,写个短代码包裹组件就行:

  1. 去主题的functions.php或者自定义插件里加这段代码(同样替换产品ID):
function edd_all_access_shortcode( $atts, $content = null ) {
    global $current_user;
    $product_id = 123; // 替换为你的All Access产品ID
    // 已购买用户隐藏内容,未购买/未登录显示
    if ( is_user_logged_in() && edd_has_user_purchased( $current_user->ID, $product_id ) ) {
        return '';
    } else {
        return do_shortcode( $content );
    }
}
add_shortcode( 'edd_hide_for_all_access', 'edd_all_access_shortcode' );
  1. 在Elementor编辑器里,把引导购买的组件放进「短代码」小工具,用短代码包裹:
[edd_hide_for_all_access]
<!-- 这里放你的引导购买内容,比如按钮、弹窗代码 -->
[/edd_hide_for_all_access]
  1. 保存后,已购买用户看不到包裹的内容,其他用户正常显示

方案3:替代Dynamic.ooo的靠谱插件

要是还是想用可视化插件,推荐两个兼容性好的:

  • Elementor Pro动态可见性:本身就支持自定义PHP条件,官方维护,稳定性拉满
  • Conditional Fields for Elementor:轻量专门做组件显示控制的插件,安装后选中组件,在「条件」标签页加规则,选「用户已购买EDD产品」,输入产品ID,设置「不满足条件时显示」就行

修复Dynamic.ooo搞坏的模板

之前用Dynamic.ooo导致模板损坏的话,按这几步来:

  1. 先导出当前Elementor模板备份
  2. 禁用Dynamic.ooo插件
  3. 重新导入备份的模板,或者手动删掉出错的动态条件,重新设置规则
  4. 换成上面的方案,避免再出兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:43:22