使用404覆盖使函数在循环外工作

时间:2016-09-01 作者:lucian

我需要覆盖404代码以用于一个非常特定的场景,但它还没有完全工作。

我正在将日档案与rel=prev/next, 链条应该从头到尾都完好无损。因此,每天至少要发布一篇帖子,最好是在午夜发布。这在编辑上不应该是个问题,即使是在一个新闻发布缓慢的日子里,预计也会有至少10篇帖子。

然而,事故可能会发生,比如停机或不必要的删除等等。即使在这种情况下,一旦有人注意到,也应该从出版端尽快修复(至少有一篇文章转发/回溯,以弥补当天的空白)。

不过,我不希望上一个/下一个链被打破,所以我认为这是最终的回退——理想情况下永远不会触发。

我在函数中添加了以下内容。php模板:

add_action( \'template_redirect\', \'empty_day\', 0 );
function empty_day() {
    global $wp_query;
    if ($wp_query->post_count == 0 && $wp_query->query[\'day\'] ) {
    status_header( \'200\' );
        $wp_query->is_404 = false;
        $wp_query->is_day = true;
        $wp_query->is_date = true;
        $wp_query->is_archive = true;
    }
}
它可以很好地将空页面重定向到存档模板,即上一个/下一个标签。

然而,函数在循环外完全停止工作(无返回),所以我不能get_the_time 也没有get_the_date 输出任何内容。

我已经尝试了建议的解决方案herehere, 但他们仍然无法与template_redirect 使用筛选或重定向模板404_template.

你知道如何让他们再次工作吗?

2 个回复
SO网友:Rarst

流程相关部分的时间安排如下:

查询执行并获取帖子(或者在这种情况下,不执行帖子)

  • template_redirect 在中更改查询变量时,将根据查询变量确定并加载模板文件template_redirect 您更改了模板选择(您观察到了),但在查询中仍然没有帖子。

    这些功能仍然有效,只是没有帖子可供使用。

    这是一个非常奇怪的情况,因为在一个404且没有帖子的档案中,你希望看到哪些帖子?

    如果不使用这样的设置,我不确定,但我可能会尝试重定向404中的“前进”,而不是“伪造”有效页面。

  • SO网友:lucian

    通过构建“私人”时间函数来完成工作:

    function my_date() { {
    $day = get_query_var( \'day\' );
    $monthnum = get_query_var( \'monthnum\' );
    $year = get_query_var( \'year\' );
    $my_date = $year.\'-\'.$monthnum.\'-\'.$day;
    } return $my_date; }
    
    现在当我调用它时,它的输出很好。

    相关推荐

    WP_ENQUEUE_STYLE-css未加载-ERR_TOO_MANY_REDIRECTS

    更改为后。在public\\u html中使用htaccess尝试HTTP->;我的网站的HTTPS重定向CSS开始失败。恢复文件没有帮助,所以我选择按forward来更改的所有实例http://domain->;https://domain在线使用推荐的方法。然而,我的CSS仍然没有加载。。。(已尝试清除本地和wordpress缓存)。通过浏览器检查开发人员,我发现以下错误:告诉我CSS文件没有被加载。检查这些表明CSS文件没有被带到本地计算机,复制链接我无法检索文件。。。但是,如果我删除?ve