Как вывести 404 страницу по определенному адресу?

Есть сайт на wordpress.

Как сделать сделать так, чтобы любая ошибочная страница вела по пути сайт/error/404 и выводился шаблон 404.php (лежит в корне сайта)?

Делаю вот так, но не работает как ожидал, адрес прописывается верный, но сам шаблон не подтягивается

add_action( 'template_redirect', '404_error_redirect' );
function 404_error_redirect()
{
    if( is_404())
    {
        wp_redirect( home_url( '/error/404' ) );
        exit();
    }
}

Ответы (2 шт):

Автор решения: WP Punk

Вам нужно добавить хук на wp и изменить стандартное поведение. Редиректите все страницы на нужную вам, а если это нужная вам, то отдаете 404. Код примерно такой:

function my_404_for_page() {
    if ( ! is_404() ) {
        return;
    }
    global $wp_query;
    if ( '/error/404' === $_SERVER['REQUEST_URI'] ) {
        $wp_query->set_404();
        status_header( 404 );
    }
    wp_redirect( home_url( '/error/404' ) );
    exit();
}

add_action( 'wp', 'my_404_for_page' );
→ Ссылка
Автор решения: KAGG Design

Вот исправленный и протестированный код из ответа WP Punk.

function my_404_for_page() {
    if ( ! is_404() ) {
        return;
    }

    $request_uri = isset( $_SERVER['REQUEST_URI'] ) ? filter_var( $_SERVER['REQUEST_URI'], FILTER_SANITIZE_STRING ) : '';

    if ( '/error/404' === $request_uri ) {
        get_header();
        require_once ABSPATH . '404.php';
        get_footer();
        exit();
    }

    wp_safe_redirect( home_url( '/error/404' ) );
    exit();
}

add_action( 'wp', 'my_404_for_page' );
→ Ссылка