我目前正在为Wordpress开发一个包含大量.php文件的插件。我看到,对于我的AddShift.php文件,我们使用以下代码行成功地导入了博客标题:
include("../../../wp-blog-header.php");然而,当我尝试在我的ajax_cal_split.php文件中做同样的事情时,我得到了以下错误:
Warning: include(./wp-blog-header.php) [function.include]: failed to open stream: No such file or directory in /opt/lampp/htdocs/sandboxj/blog/wp-content/plugins/Shifty/ajax_cal_split.php on line 11
Warning: include() [function.include]: Failed opening './wp-blog-header.php' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/sandboxj/blog/wp-content/plugins/Shifty/ajax_cal_split.php on line 11第11行当然是这样说的
include("../../../wp-blog-header.php");当一个.php文件驻留在同一目录中时,此调用有什么理由只处理一个文件而不处理另一个文件吗?
发布于 2010-01-29 04:13:00
是的-我相信wordpress在wp-content目录中的内容上有一个安全机制,我在主题上也遇到了同样的问题。我使用的变通方法是包含绝对路径名。
发布于 2014-02-28 20:51:28
这就是在插件文件中获取真实路径的解决方案
<?php
$scriptPath = dirname(__FILE__);
$path = realpath($scriptPath . '/./');
$filepath = explode("wp-content",$path);
// print_r($filepath);
define('WP_USE_THEMES', false);
require(''.$filepath[0].'/wp-blog-header.php');发布于 2011-03-26 03:57:19
你应该尝试使用wordpress提供的WP_PLUGIN_URL常量。例如,您可以像这样定义实际的插件url:
define('MyPLUGIN_URL', WP_PLUGIN_URL.'/plugin_folder/'); 然后在您的呼叫中使用它,如下所示:
include(MyPLUGIN_URL."wp-blog-header.php");这就是我如何解决这个问题的,很抱歉回答得太晚了,但这可能会对下一个签到的人有所帮助。
https://stackoverflow.com/questions/2157604
复制相似问题