如何在首尾短代码标签内添加HTML代码?
问题分析与修正方案
嘿,我来帮你搞定这个短代码的问题!你当前的写法存在一个核心错误,咱们一步步说:
你的错误点
你把[hide]短代码拆成了两部分调用:先用do_shortcode输出开头标签,然后直接写表格内容。但do_shortcode()函数的工作逻辑是必须接收完整的短代码字符串(包含开头、闭合标签和中间内容),拆分调用的话,WordPress根本没法识别这是一个完整的短代码,自然不会执行隐藏内容的逻辑,表格内容会直接暴露出来。
正确的实现方式
方式一:直接包裹完整内容
把你要隐藏的表格内容和短代码的首尾标签一起放进do_shortcode里,像这样:
<?php echo do_shortcode('[hide for="logged"] <table> <thead> <tr> <th>Domain</th> <th>Service Type</th> <th>User Name</th> <th>Client Name</th> <!-- 补充你的剩余表头/表体内容 --> </tr> </thead> <tbody> <!-- 这里放表格的具体数据行 --> </tbody> </table> [/hide]'); ?>
方式二:动态拼接内容(适合内容较多或需要动态生成的场景)
如果你的表格内容是动态生成的(比如从数据库拉取数据),可以先把内容存进变量,再拼接成完整的短代码:
<?php // 先构建要隐藏的表格内容(这里可以加动态生成逻辑) $hidden_table = '<table> <thead> <tr> <th>Domain</th> <th>Service Type</th> <th>User Name</th> <th>Client Name</th> <!-- 剩余表头 --> </tr> </thead> <tbody> <!-- 动态生成的表体内容 --> </tbody> </table>'; // 拼接完整短代码并输出 echo do_shortcode('[hide for="logged"]' . $hidden_table . '[/hide]'); ?>
这样写之后,WordPress就能正确解析[hide]短代码,实现仅登录用户可见内容的效果啦~
内容的提问来源于stack exchange,提问作者Muhibul Haque
相关产品推荐
相关产品推荐

