Php WordPress:如何在访问wp admin时强制使用404?

Php WordPress:如何在访问wp admin时强制使用404?,php,wordpress,Php,Wordpress,我在自定义页面上有一个自定义登录表单,用于处理所有登录/注销。表单根据需要发布到wp-login.php <form name="loginform-custom" id="loginform-custom" action="http://localhost/wp-login.php" method="post"> 我在functions.php文件中使用以下脚本将所有非管理员从wp admin重定向到404页面 function restrict_admin_with_redir

我在自定义页面上有一个自定义登录表单,用于处理所有登录/注销。表单根据需要发布到wp-login.php

<form name="loginform-custom" id="loginform-custom" action="http://localhost/wp-login.php" method="post">
我在functions.php文件中使用以下脚本将所有非管理员从wp admin重定向到404页面

function restrict_admin_with_redirect() {
    if ( ! current_user_can( 'manage_options' ) && ( ! wp_doing_ajax() ) ) {
        wp_redirect( site_url('/404') );
        exit;
    }
}
add_action( 'admin_init', 'restrict_admin_with_redirect', 1 );
然而,这是我的问题。当非用户(随机访问者)尝试访问wp admin时,尽管重定向脚本指向404,他们仍会被带到拒绝访问页面。出于某种原因,每当有人试图访问wp admin时,服务器都会将其视为登录尝试,当他们(当然)被拒绝登录时,他们会被重定向到拒绝访问页面

当用户访问wp admin时,有没有办法强制使用404?另外,我想要一个真正的404,而不是重定向到404页面(这不是真正的404)

想法


当任何人(用户和非用户)试图访问wp admin时,有没有办法强制他们使用404?在上面的操作脚本中,即使我将非管理员重定向到404.php页面,非用户仍然会被发送到标准访问d

考虑一下Ragu.cz中的这个解决方案

可能重复的
function restrict_admin_with_redirect() {
    if ( ! current_user_can( 'manage_options' ) && ( ! wp_doing_ajax() ) ) {
        wp_redirect( site_url('/404') );
        exit;
    }
}
add_action( 'admin_init', 'restrict_admin_with_redirect', 1 );
add_action( 'init', 'force_404', 1 );

function force_404() {
    $requested_uri = $_SERVER["REQUEST_URI"];
    do_action('debugger_var_dump', $requested_uri, '$requested_uri', 0, 0);
    do_action('debugger_var_dump', strpos( $requested_uri, '/wp-login.php'), 'FOUND?', 0, 0);

    if (  strpos( $requested_uri, '/wp-login.php') !== false ) {

        do_action('debugger_var_dump', 'REDIRECT', 'REDIRECT', 0, 0);
        // The redirect codebase
        status_header( 404 );
        nocache_headers();
        include( get_query_template( '404' ) );
        die();
    }

    if (  strpos( $requested_uri, '/wp-login.php') !== false || strpos( $requested_uri, '/wp-register.php') !== false ) {

        do_action('debugger_var_dump', 'REDIRECT', 'REDIRECT', 0, 0);
        // The redirect codebase
        status_header( 404 );
        nocache_headers();
        include( get_query_template( '404' ) );
        die();
    }

    if (  strpos( $requested_uri, '/wp-admin') !== false && !is_super_admin() ) {

        do_action('debugger_var_dump', 'REDIRECT', 'REDIRECT', 0, 0);
        // The redirect codebase
        status_header( 404 );
        nocache_headers();
        include( get_query_template( '404' ) );
        die();
    }

    do_action('debugger_var_dump', 'END', 'END', 0, 0);
}