我目前正在开发一个涉及大量.php文件的Wordpress插件。我看到,对于我的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文件而不是另一个文件上工作?
答案 0 :(得分:5)
这是您在插件文件中获取真实路径的解决方案
<?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');
答案 1 :(得分:1)
是的 - 我相信wordpress在wp-content目录中对内容运行安全机制,我遇到了与主题相同的问题。我使用的解决方法是包含绝对路径名。
答案 2 :(得分:0)
您应该尝试使用wordpress提供的WP_PLUGIN_URL常量。例如,您可以像这样定义实际的插件URL:
define('MyPLUGIN_URL', WP_PLUGIN_URL.'/plugin_folder/');
然后在您的通话中使用它:
include(MyPLUGIN_URL."wp-blog-header.php");
多数民众赞成我如何解决问题,对于迟到的回答感到抱歉,但这可能有助于下一次检查。
答案 3 :(得分:0)
它有效,按照建议操作并使用绝对网址,我使用
包括( “可湿性粉剂内容/主题/ YOUR_THEME / DESIRED_FILE.php”);