我使用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错误。
最合适的回答,由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 -->