簡體   English   中英

WordPress:訪問wp-admin時如何強制執行404?

[英]WordPress: how to force a 404 when accessing wp-admin?

我在一個自定義頁面上有一個自定義登錄表單,該表單可以處理所有登錄/注銷。 該表單根據需要發布到wp-login.php。

<form name="loginform-custom" id="loginform-custom" action="http://localhost/wp-login.php" method="post">

所有無效的登錄嘗試均由functions.php文件中的以下腳本處理:

/**
 * Redirect user on invalid log-in attempts
 */
function login_failed() {
    wp_redirect( home_url('/access-denied') );
    exit;
}
add_action( 'wp_login_failed', 'login_failed' );

function verify_username_password( $user, $username, $password ) {
    if( $username == "" || $password == "" ) {
        wp_redirect( home_url('/access-denied') );
        exit;
    }
}

我在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,服務器都會將其視為日志。 -in嘗試,當它們(當然)被拒絕登錄時,它們將被重定向到拒絕訪問頁面。

用戶訪問wp-admin時,有什么方法可以強制執行404? 另外,我想要的是真正的404,而不是重定向到404頁面(這不是真正的404)。

思考?

當有人嘗試訪問wp-admin時,是否有辦法強迫任何人(用戶和非用戶)使用404? 在上面的操作腳本中,即使我將非管理員重定向到404.php頁面,非用戶仍然會被發送到標准訪問權限d

考慮Ragu.cz提供的解決方案。

https://wordpress.org/support/topic/make-wp-admin-throw-a-404-page-or-something/#post-8565864

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM