主题的function.php文件中的Wordpress条件标签

时间:2014-06-25 05:18:31

标签: php wordpress

我正在尝试在我的主题的function.php文件中设置 HTTP响应标题,我试图将过期时间设置为单个帖子页面的6小时和其他人的20分钟。

我需要检查当前访问的网址是否是一个帖子页面。为此我使用wordpress条件标签,但它们无法正常工作。

这是我的代码:

function add_custom_http_headers($headers) {
    $headers['Cache-Control'] = 'public';
    $now = time();
    if(is_single())
        $then = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 60*60*6);
    else
        $then = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 20*60);

    header("Expires: $then");
    header("Last-Modified: ".gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now));
    return $headers;
}

add_filter('wp_headers', 'add_custom_http_headers');

似乎我们无法访问我尝试使用它们的条件标签。请帮我找到当前页面类型的解决方案,即它的帖子页面/主页/有/不使用functions.php中的条件标签或任何其他合适的代码点来实现此标题设置模块。

2 个答案:

答案 0 :(得分:2)

您还可以在header.php文件中设置标题,如下所示:

$now = time();
    if(is_single())
        $then = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 60*60*6);
    else
        $then = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 20*60);

    header("Expires: $then");
    header("Last-Modified: ".gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now));
    header("Cache-Control: public");

试试这个,我认为它应该有用。

答案 1 :(得分:0)

如果要查找当前页面类型,请使用get_post_type()。函数is_single()不用于检查帖子类型,它用于检查您在单个帖子页面上的天气。当你在一个帖子页面上时它返回true,否则返回false。