如何针对购买EDD All Access的用户控制Elementor组件显隐或分配模板
针对EDD All Access购买用户实现Elementor组件/模板的显示控制
方案1:用EDD内置函数+Elementor原生动态可见性(无第三方插件)
Elementor Pro自带的动态可见性功能就能搞定,不用依赖容易出问题的第三方插件,步骤如下:
- 打开Elementor编辑器,选中要控制的引导购买组件(弹窗、模块都行)
- 切换到「高级」标签页,找到「动态可见性」(没看到的话确认Elementor Pro已激活)
- 点击「添加条件」,选「自定义条件」→「PHP条件」
- 在代码框里输入判断逻辑(记得替换成你的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;
- 把可见性规则设为「条件不满足时显示」——因为代码返回
true代表用户已购买,所以不满足条件的用户(未登录/未购买)就能看到引导组件,已购买的自动隐藏 - 保存设置后测试即可
如果要给已购买用户分配特定模板:
- 打开页面的Elementor设置(底部的齿轮图标)
- 找到「条件模板」,添加自定义PHP条件,用上面的代码,设置成「条件满足时加载指定模板」
方案2:自定义短代码控制组件显示
不想用Elementor的PHP条件的话,写个短代码包裹组件就行:
- 去主题的
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' );
- 在Elementor编辑器里,把引导购买的组件放进「短代码」小工具,用短代码包裹:
[edd_hide_for_all_access] <!-- 这里放你的引导购买内容,比如按钮、弹窗代码 --> [/edd_hide_for_all_access]
- 保存后,已购买用户看不到包裹的内容,其他用户正常显示
方案3:替代Dynamic.ooo的靠谱插件
要是还是想用可视化插件,推荐两个兼容性好的:
- Elementor Pro动态可见性:本身就支持自定义PHP条件,官方维护,稳定性拉满
- Conditional Fields for Elementor:轻量专门做组件显示控制的插件,安装后选中组件,在「条件」标签页加规则,选「用户已购买EDD产品」,输入产品ID,设置「不满足条件时显示」就行
修复Dynamic.ooo搞坏的模板
之前用Dynamic.ooo导致模板损坏的话,按这几步来:
- 先导出当前Elementor模板备份
- 禁用Dynamic.ooo插件
- 重新导入备份的模板,或者手动删掉出错的动态条件,重新设置规则
- 换成上面的方案,避免再出兼容性问题
内容的提问来源于stack exchange,提问作者Hanna983
相关产品推荐
相关产品推荐

