【问题标题】:if is_page function not working for my PHP website如果 is_page 函数不适用于我的 PHP 网站
【发布时间】:2014-12-02 13:38:52
【问题描述】:

我在我的 PHP 网站中使用 if else 条件标记。我的代码是:

<?php if(is_page('print-systems-overview.php')) { ?>
<style type="text/css">
.activeNew{background:#4E4E4E;}
</style>
<?php } elseif (is_page('software.php')) { ?>
<style type="text/css">
.activeNew{background:grey;}
</style>
<?php } ?>

但我遇到了致命错误: 致命错误:在第 36 行调用 D:\xampp\htdocs\project1234\header.php 中未定义的函数 is_page()

经过研究,我知道 is_page 是在 wordpress 上工作的,只是它是 wordpress 函数,而不是在核心 PHP 上工作。有没有办法在核心 PHP 中执行这种类型的功能。

请帮我解决这个问题。我是 PHP 新手,所以对它了解不多。谢谢

瑞奇

【问题讨论】:

  • 什么是is_page()?您是否在某处创建了函数?
  • is_page() 是 Wordpress codex.wordpress.org/Function_Reference/is_page - 安装了吗?
  • 感谢 Darren 和 Fred 我知道 is_page 是 wordpress 功能,我们不能在 wordpress 之外使用它。我没有在我的网站中创建 is_page 函数。无论如何在核心PHP中做这种事情。我对 PHP 很陌生。我只在 wordpress 中工作,一切都准备好了,但在它之外我们必须创建每个功能。请让我知道如何在 PHP 中执行此类操作。如果你给我一些例子来做这种类型的查询,它会有很大的帮助。谢谢

标签: php


【解决方案1】:

页面是wordpress函数,如果你想在核心php中创建类似的东西,这是一种方法

创建一个文件来保存这个函数,比如functions.php,这样你就可以重复使用它并将它包含在页面中

functions.php

<?php

function is_page($page_name) {
   $url = $_SERVER['SCRIPT_NAME'];
   //Check for current page equal to $page_name
   return basename($url) == $page_name;
}

然后检查页面调用它就像

<?php include('functions.php') ?>

<?php if(is_page('print-systems-overview.php')) { ?>
<style type="text/css">
.activeNew{background:#4E4E4E;}
</style>
<?php } elseif (is_page('software.php')) { ?>
<style type="text/css">
.activeNew{background:grey;}
</style>
<?php } ?>

【讨论】:

  • 感谢 Saqueib,所以我必须创建文件 function.php 并在那里创建这个函数。然后我希望我可以在我的页面中使用上面的代码(is_page 函数)。我会试试。再次感谢。
  • 是的,定义上面的函数并像你一样调用它,它会工作
  • 你好 Saqueib,我在脚本标签下的头文件中创建函数,然后在同一个头文件中使用上面的代码,但它仍然在站点上显示相同的错误...致命错误:调用未定义的函数 is_page()在 D:\xampp\htdocs\project1234\header.php
  • 现在我在当前页面上使用它现在 activeNew 类样式在所有选项卡上使用。我希望该样式仅出现在当前页面上而不是所有页面上。我在所有选项卡上使用 activeNew 类,但我想要像我的代码一样的样式。但它不工作......类调用但所有选项卡
  • 祝你好运...我还在等待这个问题是否解决...如果解决了我真的很感谢:)
【解决方案2】:

您可以使用basename($_SERVER['PHP_SELF']); 将返回当前文件名

function is_page(){
   $file_name = basename($_SERVER['PHP_SELF']);
   if($file_name == 'print-systems-overview.php') { ?>
     <style type="text/css">
    .activeNew{background:#4E4E4E;}
     </style>                
   <?php } elseif ($file_name == 'software.php') { ?>
     <style type="text/css">
     .activeNew{background:grey;}
     </style>
   <?php }
 } ?>

只需调用 is_page() 函数

【讨论】:

  • 您好 Vidya,我在 fucntion.php 文件中使用了上述函数,但没有什么好结果。显示错误,希望您能修复此错误.....解析错误:语法错误,第 4 行 D:\xampp\htdocs\project1234\function.php 中的意外 '
  • 现在错误消失了,但什么也没发生。我为我的标签使用 activeNew 类我希望在当前页面调用时该标签颜色发生变化。但是当我在 print-systems-overview.php 页面时没有调用类。知道它背后的问题是什么..?
  • 它是不可复用的,你需要使用一个函数来检查当前页面,然后决定做什么。
  • 所以我在函数中使用什么来检查当前页面。请问你可以编码吗??
  • @rickky 我已经在下面给出了答案,请尝试。它的工作我已经检查过了,只需在所有页面上方包含functions.php 就可以了,之后无需更改任何内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
相关资源
最近更新 更多