我只需要在我网站的主页上包含外部php文件。
但是,由于网站上的所有页面都使用相同的页面模板(主页模板),我无法根据它进行过滤,所以我想知道是否有办法将PHP文件仅包含在主页URL(即www。 domain.com/folder)并且不要在任何其他页面上显示它(例如www.domain.com/folder/lorem)。
我尝试在header.php文件中使用此代码段:
<?php
if ($_SERVER['PHP_SELF'] = '/')
include('some-file.php');
?>
并且该文件也包含在所有其他页面上。
我是一个PHP新手,很抱歉,如果这是一个愚蠢的问题:)
更新: 我把它改成了
<?php
if ($_SERVER['PHP_SELF'] == '/')
include('some-file.php');
?>
它仍然没有出现。
答案 0 :(得分:5)
您可以使用WordPress的is_front_page()
功能进行检查。
因此,您的代码应为:
<?php
// if code does not work, adding the next line should make it work
<?php wp_reset_query(); ?>
if ( is_front_page() ) {
include('some-file.php');
}
?>
来源:https://codex.wordpress.org/Function_Reference/is_front_page
或者,如果以上操作不起作用,您可以尝试:
if ( $_SERVER["REQUEST_URI"] == '/' ) {
include('some-file.php');
}
作为最后的手段,尝试使用插件将PHP直接插入页面,其中一个插件是https://wordpress.org/plugins/insert-php/。
更新:在评论中详细阐述之后,我想出了另一种方法,如下所示。
在您的情况下,这可能会有效。此代码首先获取URL,然后解析它以获取目录,并将目录分配给$directory
。如果它位于首页上,则不会设置$directory
,因此请加some-file.php
。
<?php
// Get URL
$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
// Get Directory (eg. will return 'folder' in example.com/folder/files)
$parts = explode('/', $link);
$directory = $parts[3];
// If $directory is null, include PHP (eg. example.com, there is no directory)
if ($directory == ''){
include('some-file.php');
}
?>
希望以上方法有所帮助,谢谢!
答案 1 :(得分:2)
您的代码存在以下几个问题:
<?php
if ($_SERVER['PHP_SELF'] = '/')
include('some-file.php');
?>
如前所述,您的比较(==)并不正常,因为您实际上正在使用赋值(=)。
其次,超级全局变量$_SERVER['PHP_SELF']
将永远不会只包含/
,因为该变量将包含当前正在执行的文件的路径和文件名,如{{3 }}
所以你必须挑出你的文件,当然要使用正确的比较方式。所以脚本看起来可能类似于以下内容:
<?php
if (basename($_SERVER['PHP_SELF']) == 'index.php')
include('some-file.php');
?>
当然,如果您在不同的目录中有多个index.php文件,这将无法按预期工作。
答案 2 :(得分:0)
if
- 语句总是分为true
或false
,一个=
是作业
您的错误会导致$_SERVER['PHP_SELF'] IS '/'
,因此是真的。
您必须使用==
进行比较,或使用===
进行类型安全比较。
答案 3 :(得分:0)
自: http://php.net/manual/en/reserved.variables.server.php
&#39; PATH_INFO&#39;可能就是你想要使用的东西:
包含任何客户端提供的路径名信息,该信息尾随实际脚本文件名但在查询字符串之前(如果可用)。例如,如果通过网址http://www.example.com/php/path_info.php/some/stuff?foo=bar访问了当前脚本,那么$ _SERVER [&#39; PATH_INFO&#39;]将包含/ some / stuff。
答案 4 :(得分:0)
对于每个wordpress页面都有一个id。所以你可以根据id来编写这个条件 (1)请找到您的主页id
如果2是您的主页ID,则在标题
之后的模板文件中写下以下代码<?php
if (get_the_ID() == 2)
include('some-file.php');
?>
要了解有关get_the_ID()的详细信息,请阅读此https://developer.wordpress.org/reference/functions/get_the_ID/
答案 5 :(得分:0)
在条件中使用let byteCount = 1000 * sizeof(Float)
let sharedMetalBuffer = self.metalDevice.newBufferWithLength(byteCount, options: .StorageModeShared)
。当您在指定为主页的页面上时,返回true。不要使用is_front_page()
。这将返回博客文章存档页面。
我知道......混淆吧?但那是你的WordPress。
答案 6 :(得分:0)
$ _ SERVER ['PHP_SELF']与'/'的比较没有意义。而不是'/'尝试使用索引文件的路径。
另一种方法是使用__FILE__
常量,但这只适用于您的环境
<?php
if ($_SERVER['PHP_SELF'] == '/index.php'){
include_once('some-file.php');
}
?>