Php WordPress:如何在访问wp admin时强制使用404?
我在自定义页面上有一个自定义登录表单,用于处理所有登录/注销。表单根据需要发布到wp-login.phpPhp 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
<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);
}