为什么我不能加入博客?

时间:2009-06-10 15:58:03

标签: php wordpress include

我经常遇到这样一种情况:“权力”需要网站上多个地方的精确页面副本。我没有实际复制内容,而是覆盖突出显示的导航中的部分,然后包含页面。最后一页看起来像这样:

<?php
    $top_nav_item_id = 'teen';
    include('../interests/teacher-resources.php');
?>

这通常有效。我试图复制这个博客类别,在wordpress中完成。无论我做什么,我似乎得到的只是一个空白页。我已经尝试了以下所有行:

<?php
    include('../blog/index.php');
    include('../blog/type/teen/index.php');
    include('../blog/type/teen/');
    include('../blog/');
?>

有没有人有任何想法?这是一个URL重写的东西吗?我是否必须包含该特定类别的模板文件?

感谢任何帮助。

5 个答案:

答案 0 :(得分:6)

PHP include需要文件,而不是URL,因此它无法访问WordPress公开的URL命名空间。这些文件不存在于磁盘上; mod_rewrite首先将漂亮的URL转换为index.php的内部请求,WordPress根据原始URL确定您真正想要的内容,从数据库中获取大量内容,然后生成页面。

答案 1 :(得分:2)

这是一个非常复杂的话题,从一开始就不是很明显。 This页面可以帮助您入门。关键是要包含WordPress博客标题 - 在链接页面上进行解释。您可能还想查看WordPress Codex有关使用WordPress引擎API的资源。

答案 2 :(得分:0)

ini_set('display_errors', true);
error_reporting(E_ALL);

不知道出了什么问题,但确实如此。也许Wordpress无法找到它的环境,也许有些变量被覆盖......实际上,包含像wordpress这样的解决方案是一个坏主意,因为你永远不知道,全局变量,函数,类会相交。

PS:顺便说一下,include使用文件系统路径而不是URL。

答案 3 :(得分:0)

对于类似的问题,我使用iframe来包含内容的副本。您可以编写原始页面以在URL中查找“?embed = 1”标志,并且仅在存在嵌入标志时在主页面中包含可嵌入内容(因此您可以省略多余的工具栏和框架) 。)所以iframe src url会使用?embed = 1标签来嵌入内容。

答案 4 :(得分:0)

这个解决方案有点像黑客攻击,但是,这个问题有点像黑客入侵。

我很好地解释了为什么我不能包含博客页面,但没有任何替代方案可以帮助我。

我的最终解决方案是直接修改该页面的类别模板。如前所述,我使用$ top_nav_item_id来控制导航中突出显示的菜单项,以提供属于该部分的页面的外观。我没有覆盖它,而是简单地以查询字符串为条件。只要用户在我的网站上关注合法链接,他们就会获得正确的查询字符串并且没有任何问题。

在Wordpress中禁用了

$ _ POST。 $ query_string(内置于WP中)使用某种缓存,并且总是在首次加载时显示。

最终解决方案:

if(strtolower($_SERVER['QUERY_STRING'])=='display=teen') {
    $top_nav_item_id = 'teen';
} else {
    $top_nav_item_id = 'programs';
}

感谢所有试图提供帮助的人。