用于检查Wordpress上的page.php用法的条件语句

时间:2016-02-18 17:30:42

标签: php wordpress templates

有没有办法检查是否正在使用page.php模板?标准方法不起作用:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="trending-wrap" class="clearfix">
  <a id="trending-moneyshot" href="javascript:void(0);">
    <img class="pull-left" src="/image/local/global/trending_image_default.png" />
  </a>
  <div id="trending-text-wrap">
    <div id="trending-title" class="spacerBottomMedium">
      Trending: <span class="bold"></span>
    </div>
    <div id="trending-text">
      <p></p>
      <a id="trending-refresh" href="javascript:void(0);" style="display:none;">
        <img class="pull-left" src="http://lorempixel.com/50/50/technics" />
      </a>
    </div>
  </div>
</div>

但是,如果我将page.php更改为任何其他模板(page-about.php等),它可以正常工作。

2 个答案:

答案 0 :(得分:0)

我也无法使is_page_template();正常工作。我将其放入footer.phpheader.php进行测试,它会显示正在使用的页面模板以及是否正在使用page.php。如果它被放入标题中,它可以很容易地适应控制页面上接下来发生的事情。

它应该可以正确地完成WordPress风格并放入你孩子主题的functions.php中,但这是基本代码:

 <?php  $temp = explode('/', get_page_template()); 
        if( $temp[count($temp)-1] == "page.php" ) {
          echo " page.php is being used.";
        }else{
          echo  $temp[count($temp)-1] . " is being used.";
        }
 ?>

它获取当前模板的完整路径,分割页面名称并比较或回显它。如果您实际上要回应它而不仅仅使用其功能来修改其他显示参数,那么您应该将其括在htmlspecialchars();中以避免注入攻击。

 <?php  $temp = explode('/', get_page_template()); 
        if( $temp[count($temp)-1] == "page.php" ) {
          echo " page.php is being used.";
        }else{
          echo  htmlspecialchars($temp[count($temp)-1]) . " is being used.";
        }
 ?>

这看起来像是对更多WordPressy方法的讨论,以及它可能无法正常工作的可能原因 - 尽管我认为当你到达footer.php时,应该很清楚哪个模板使用https://wordpress.org/support/topic/is_page_template-in-functionsphp-not-working

仅供参考,这是WordPress方法,在The Loop中使用时对其局限性进行了注释。 https://developer.wordpress.org/reference/functions/is_page_template/

答案 1 :(得分:0)

实际上它非常简单 只需使用:

is_page_template()

如果它返回true而不是page.php没有被使用,反之亦然 :)