WordPress中PHP短码输出位置错误,需在下拉菜单显示下周日
解决WordPress短码输出位置错误的问题
你遇到的这个问题其实很常见——短码内容跑到页面左上角,核心原因是WordPress短码函数不能直接用echo输出内容,必须通过return返回结果。
问题根源
当你在短码函数里使用echo时,内容会直接输出到PHP的输出缓冲区,这个操作发生在WordPress构建页面内容(包括菜单)的流程之前,所以内容会被提前渲染到页面最顶部,而不是短码所在的目标位置。
修正后的短码代码
把你的函数改成用return代替echo,就能解决位置偏移的问题:
function WebinarDaySunday() { return date("j, M", strtotime("next sunday")); } add_shortcode('webinardaysunday', 'WebinarDaySunday');
额外注意:让菜单支持短码
如果修改后菜单里只显示短码文本[webinardaysunday]而不是日期,那是因为很多WordPress主题默认不会解析菜单中的短码。你可以添加下面这段代码到主题的functions.php文件中,让菜单能够识别并处理短码:
add_filter('nav_menu_item_title', 'do_shortcode');
完成以上修改后,把[webinardaysunday]插入到下拉菜单的自定义菜单项中,当周的下周日日期就会正确显示在你预期的菜单位置了。
内容的提问来源于stack exchange,提问作者HomanBas
相关产品推荐
相关产品推荐

