如何在WordPress主题中使用EDD Restrict Content短代码?
正确在WordPress主题中嵌入EDD Restrict短代码的方法
你之前的代码存在两个核心问题:
- 语法错误:
<?php =echo是无效写法,正确的PHP输出语法为<?php echo - 内容处理错误:直接拼接未定义的
sample text无法生成实际的下载链接内容
正确的实现方式是先捕获下载链接代码的输出内容,再将其传入EDD Restrict短代码中执行,以下是可直接放入single.php对应位置的完整代码:
<?php // 开启输出缓冲,捕获后续代码的输出内容 ob_start(); ?> <li> <?php if(get_post_meta($post->ID, 'download', true) != ""): ?> <a href="<?php echo get_post_meta($post->ID, 'download', true); ?>">直接下载链接</a> <?php endif; ?> <?php if(get_post_meta($post->ID, 'download32', true) != ""): ?> <a href="<?php echo get_post_meta($post->ID, 'download32', true); ?>">32位版本直接链接 / </a> <?php endif; ?> <?php if(get_post_meta($post->ID, 'download64', true) != ""): ?> <a href="<?php echo get_post_meta($post->ID, 'download64', true); ?>">64位版本直接链接</a> <?php endif; ?> <?php if(get_post_meta($post->ID, 'downloadwin', true) != ""): ?> <a href="<?php echo get_post_meta($post->ID, 'downloadwin', true); ?>">Windows版本下载</a> <?php endif; ?> </li> <?php // 获取缓冲中的输出并关闭缓冲 $download_links = ob_get_clean(); // 执行EDD Restrict短代码,传入捕获的下载链接内容 echo do_shortcode( '[edd_restrict id="any"]' . $download_links . '[/edd_restrict]' ); ?>
代码说明:
- 用
ob_start()和ob_get_clean()捕获下载链接模块的HTML输出,避免直接echo导致内容无法嵌入短代码 - 将捕获的内容拼接进EDD Restrict短代码字符串,通过
do_shortcode()执行短代码实现内容限制 - 把原代码中的非中文文本替换为中文,适配国内站点使用
- 改用
if...endif语法,让模板代码更易读
内容的提问来源于stack exchange,提问作者Hamoon
相关产品推荐
相关产品推荐

