如何在Wordpress 3+中使用is_page_template()定位SPECIFIC模板

时间:2011-10-22 19:28:31

标签: wordpress

我正在运行Wordpress 3.2,我需要一个条件来测试某些模板。我的模板是一个名为special_offer.php的文件。模板的名称是"特别优惠"。我已尝试过以下两种方法:

is_page_template('special_offer.php');
is_page_template('Special Offer');

这些都不起作用! documentation清楚地表明参数应该是一个带有文件名称的字符串,所以我不确定是什么错。我知道该函数至少部分有效,因为如果我不包含参数,则对于使用模板的任何页面都会返回true(如预期的那样)。

2 个答案:

答案 0 :(得分:2)

AHA! 我通过在条件之前添加wp_reset_query()来解决这个问题。

我已经阅读过关于许多WP条件不在循环内工作的警告。但是,我的条件不在循环内。 事实证明,即使在循环之后它也无法工作,这就是我的。所以你需要在调用它之前重置查询。

答案 1 :(得分:0)

值得根据WordPress template hierarchy [图片]仔细检查正在使用的文件。

尝试将此魔术常量添加到您认为正在调用的模板文件中:

<?php echo(__FILE__); ?>

如果您没有看到使用其他文件的路径和文件名(请参阅上面链接中的模板层次结构图)或检查哪些模板可用:

<?php print_r( get_page_templates() ); ?>

(^看起来必须从管理界面调用,例如在插件中)

此外,文档似乎表明,如果不首先调用另一个函数,is_page_template()将无法在循环中工作。