用于更改404页面内容的筛选器

时间:2014-01-15 作者:sakibmoon

我创建了自定义重写规则。这些规则现在按预期转到404页。我可以用动作钩template_redirect 更改模板匹配的步骤query_var.

但我不想创建单独的模板文件,因为页面结构取决于当前使用的主题。相反,我只想更改内容和标题。我已尝试使用更改内容the_content 过滤器,但似乎过滤器甚至没有被404页调用。

我也试过加载index.php 模板,然后使用the_content 过滤,但也不起作用。

有没有办法做到这一点?

2 个回复
最合适的回答,由SO网友:sakibmoon 整理而成

正如@Milo所指出的,从Wordpress的角度来看,这似乎是不可能的

404页面上没有可更改的内容,我建议使用另一种方法,您可以提供一个选项,将实际页面指定为这些虚拟页面的目标。

所以,我不得不改变我的计划。从插件管理员那里,我保留了一个选项,可以将页面集成为所有请求的处理程序,并发送不同的内容匹配查询变量。

SO网友:Jeremiah Prummer

我有一个404插件,基本上可以满足您的需要(如果我理解正确的话),只是它创建了一个新页面(使用与主题相同的模板),并将其注册为404页面。如果您已经有一个现有的WordPress页面(不是php文件),那么您可以使用类似以下的代码将其转换为新的404页面。Note: 您确实需要对此进行一些自定义。请参见下面代码中的注释。

//redirect on 404
function redirect_404() {
    global $options, $wp_query;
    if ($wp_query->is_404) {
        $page_title = $this->options[\'404_page_title\'];//replace with your page title
        $redirect_404_url = esc_url(get_permalink(get_page_by_title($page_title))); 
        wp_redirect( $redirect_404_url );
        exit();
    }
}

//Make sure proper 404 status code is returned
function is_page_function() {
    global $options;
    $page_title = $this->options[\'404_page_title\'];//replace with your page title
    if (is_page($page_title)) {
        header("Status: 404 Not Found");
    }
    else {
        return;
    }
}

//Register Hooks
add_action( \'template_redirect\', \'redirect_404\');
add_action(\'template_redirect\', \'is_page_function\');
如果要签出完整的插件代码,可以在此处签出:http://wordpress.org/plugins/404-silent-salesman/

希望有帮助!

结束

相关推荐

Custom post types templates

我已经注册了一个名为“Services”的自定义帖子类型,但当我给这篇帖子提供模板“single Services.php”时,它不接受这个,而是选择了“homepage.php”模板,你能告诉我这个问题吗?它也没有使用“archive services.php”模板,而是使用blog模板(index.php)使现代化代码如下:add_action(\'init\', \'services_register\'); function services_register() { $