不能包含来自Wordpress主题文件夹的PHP文件

时间:2015-04-14 12:14:06

标签: php wordpress

我试图在我的Wordpress主题文件的根目录中包含一个PHP文件。

  

e.g localhost / mywordpresssite / wp-content / themes / mytheme / myfile.php

我试图通过位于footer.php

的文件parts > shared来调用它
  

e.g localhost / mywordpresssite / wp-content / themes / mytheme / parts / shared / footer.php

我可以确认,当访问浏览器中的完整网址时,文件会显示,因此它绝对是正确的路径。

我无法以多种不同的方式包含此文件:

1)首选方式 - 使用样式表目录URI

<?php
    $stylesheet_root = get_stylesheet_directory_uri();
    include $stylesheet_root.'/myfile.php';
?>

这应该找到样式表URI然后找到该文件,但是我收到了这个错误:

  

找不到合适的包装

我理解这种情况发生的原因是它不安全且allow_url_include默认关闭,所以最好的方法是什么?

2)在URL中编码以爬上两个目录

这似乎是一种相当明智的方式,因为文件总是相对于彼此相对的两个目录。但这似乎什么都不做。它仍然在同一目录中查找文件:

<?php include '../../myfile.php'; ?>

3)只需硬编码愚蠢的东西。

然而,即使此处放置的URL已在浏览器中进行测试并成功加载了正确的文件,但此STILL仍无法正常工作。它不会将它加载到包含的文件中......

<?php include 'localhost/mywordpresssite/wp-content/themes/mytheme/twitter-feed.php'; ?>

给出错误:

  

警告:include(localhost / mywordpresssite / wp-content / themes / mytheme / twitter-feed.php):无法打开流:/ Applications / MAMP / htdocs / mywordpresssite / wp-content /中没有此类文件或目录第3行的主题/ mytheme / parts / shared / footer.php

我还能做什么?

4 个答案:

答案 0 :(得分:5)

您正在尝试通过网址include。你需要include文件的路径(而不是uri):

<?php
    $stylesheet_root = get_stylesheet_directory();
    include( $stylesheet_root . '/myfile.php' );
?>

详细了解get_stylesheet_directory() in the docs

答案 1 :(得分:0)

好像你正在使用相对路径,即。你没有开始/。该路径应类似于(unix / mac)/var/www/mywordpresssite/wp-content/themes/mytheme/twitter-feed.php

您可以使用include(__DIR__ . '/myfile.php');,因此您的包含始终相对于您的脚本当前所在的目录。

由于某些原因,使用../../myfile.php不适用于包含。

答案 2 :(得分:-2)

我把hello.php放在我的主题的根文件夹中(footer.php所在的位置),这对我来说在footer.php的末尾有效:

<?php include (TEMPLATEPATH . '/hello.php'); ?>

答案 3 :(得分:-5)

使用

<?php include 'get_template_directory_uri()/myfile.php'; ?>

而不是

<?php include '../../myfile.php'; ?>