自定义页面模板如何从unctions.php检查is_page?

时间:2011-05-11 作者:ide79

拥有一个自定义页面模板,并尝试根据您所在的页面动态调整摘录长度。

功能。php

<?php

function custom_excerpt_length($length){
    if (is_page(15)) {
    return 20;
    } else {
    return 150; 
    }
}
add_filter ( \'excerpt_length\', \'custom_excerpt_length\');

?>
无法从“我的自定义模板”页面中的函数获取要使用的is\\U页面。

如果我尝试echo is_page(15); 在静态自定义模板中,值为true.

我有点困惑。可以打电话吗is_page() 来自函数。php(WP 3.1.2)

3 个回复
SO网友:Bainternet

使用is_page() 内部功能。php很好,很有可能,也很有效is_page(15) 如果是真的,那意味着你在一个ID为15的页面上。

问题可能是add\\u filter调用的优先级参数,来自codex:

确保正确设置优先级,否则此函数上的默认WordPress过滤器将最后运行并覆盖您在此处设置的内容。

因此,请将代码更改为:

add_filter ( \'excerpt_length\', \'custom_excerpt_length\',999);

SO网友:Aleksandr

我找到的解决方案基于url_to_postid 作用

$url = explode(\'?\', \'http://\'.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
$ID = url_to_postid($url[0]);
有了这个,我可以在functions.php 文件

SO网友:queirdo

这与函数文件中的函数无关,而是函数在“循环”中被调用,因为它附加到摘录过滤器。is\\u page()在循环中始终返回false,因此在那里没有用处。

结束

相关推荐

如何在没有P标记包装器的情况下回显_excerpt?

在下面的代码片段中,我试图将\\u摘录写出来而不带标记。但是,源格式显示\\u摘录总是用P标记包装。如何提取没有标签的摘录?foreach($myrecentposts as $idxrecent=>$post) { ?> <li class=\"page_item\"> <a href=\"<?php the_permalink(); ?>\"><?php the_title(); ?></a>&