动态404页面内容,同时仍保留404状态代码?

时间:2019-02-13 作者:user3183717

我使用Divi构建了一个自定义404页面的布局。我正在使用这个插件https://wordpress.org/plugins/redirect-404-error-page-to-homepage-or-custom-page/ 将404错误重定向到此页面。它可以工作,但当我运行像尖叫蛙这样的工具时,它会以301重定向的形式返回断页,我想这是意料之中的。

然而,我更喜欢的是我的404。php模板包含我构建的页面,这样我仍然可以准确跟踪404错误。我在想这样的事情:

#404.php
<?php 

require(/*Some function to get my entire custom 404 page by slug or ID*/;)

?>
我尝试的内容:

//Redirect to our custom 404 page
function wf_404(){
//Check if custom 404 page exists to protect against infinite loop
   if (is_404() && get_page_by_path(\'/404-page/\', OBJECT)){
       wp_safe_redirect(get_site_url() . \'/404-page/\', 404);
       exit;
   } 
}

add_action(\'get_header\', \'wf_404\');
这给了我一个一般的浏览器404错误。

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

您可以从单数复制php/html。php/页。php到404。php。然后将内容循环替换为echo apply_filters(\'the_content\', $page->post_content); 如mrben522所示。

使用中的代码codex 例如,

<?php
/**
 * The template for displaying 404 pages (Not Found)
 *
 * @package WordPress
 * @subpackage Twenty_Thirteen
 * @since Twenty Thirteen 1.0
 */

get_header(); ?>

<div id="primary" class="content-area">
    <div id="content" class="site-content" role="main">

        <header class="page-header">
            <h1 class="page-title"><?php _e( \'Not Found\', \'twentythirteen\' ); ?></h1>
        </header>

        <div class="page-wrapper">
            <div class="page-content">
                <?php 
                    $page_id = get_post(100); // change ID;
                    echo apply_filters(\'the_content\', $page->post_content); // This is where the magic (should) happen
                ?>
            </div><!-- .page-content -->
        </div><!-- .page-wrapper -->

    </div><!-- #content -->
</div><!-- #primary -->

相关推荐

WordPress Global Redirect

我需要进一步展开讨论Redirect entire website to a single page 包括两页而不是一页。在这个网站上,我需要两个网页是活的和所有其他重定向到主页。http://prairiebrand.com/这就是我正在尝试的代码,我得到了一个永久重定向。add_action( \'template_redirect\', \'wpse_76802_goodbye_redirect\' ); function wpse_76802_goodbye_redire