如何通过短码返回WordPress插件包含文件中PHP函数的内容?
解决WordPress短码调用子文件函数不输出内容的问题
你的问题核心在于两个细节处理不当:
- 子文件中直接执行
myFunc()但未将返回值传递给短码函数; - 短码函数本身没有返回任何内容,而WordPress短码要求函数必须返回输出内容才能正常显示。
修改步骤:
1. 调整子文件nameToCall.php
只保留函数定义,不要在子文件里直接执行函数:
<?php function myFunc(){ return "<p class='testRed'>Hello world 2!!</p>"; }
2. 修改主文件的短码函数
引入子文件后,调用myFunc()并返回其结果,同时增加文件存在判断避免报错:
function my_shortcode_function() { $func_file = plugin_dir_path( __FILE__ ) . '/functions/nameToCall.php'; // 先检查文件是否存在,避免致命错误 if ( file_exists( $func_file ) ) { require $func_file; // 调用子文件的函数并返回结果给短码 return myFunc(); } // 文件不存在时返回默认提示 return "<p>函数文件未找到</p>"; } add_shortcode('my_shortcode', 'my_shortcode_function');
补充说明:
- WordPress短码的核心逻辑是返回内容,而非直接echo输出(虽然echo能显示,但不符合官方规范,可能引发排版问题);
- 加入
file_exists()判断是为了提升插件稳定性,避免因文件缺失导致网站崩溃; - 子文件仅负责定义函数,把输出控制权交给短码函数,更符合模块化开发的思路。
内容的提问来源于stack exchange,提问作者Chris98
相关产品推荐
相关产品推荐

