Existe uma maneira de mostrar uma página 404 se o usuário conectado no momento não tiver a permissão certa para exibir a página? Estou procurando um método PHP, algo como
if( !current_user_can('administrator') ) { show_404(); exit(); }
Pensei em usar um redirecionamento, mas gostaria de manter o URL da mesma forma.
Respostas:
Consegui exibir um erro 404 usando o seguinte código no meu cabeçalho.
Para dividir
$wp_query->set_404()
:: diz ao wp_query que este é um 404, isso altera o títulostatus_header()
: envia um cabeçalho HTTP 404get_template_part()
: exibe o modelo 404fonte
http_status_code(404);
antes de definir o modelo para garantir que o cabeçalho esteja correto (o que é significativamente mais rápido que astatus_header( 404 );
função wordpress ). Se você está preocupado com a classificação da página, também deve colocar umaDisallow
regra no seu robots.txt para indicar que não é um recurso público.Por que você não cria uma página que mostra mensagem de erro e redireciona o usuário para essa página? Aqui está uma maneira simples de conseguir isso:
Abra o
404.php
arquivo e adicione estas linhas na parte superior:Crie uma página com
404 Page
modelo. Em seguida, redirecione os usuários:O motivo pelo qual você deve usar uma página para solicitação 404 é: na página WP 404, na verdade, é uma página que não existe , o WP precisa procurar todo o seu conteúdo antes de retornar a página 404 e esse trabalho é um desperdício de recursos. Usando uma página pré-configurada que pode ajudá-lo a executar seu blog mais rapidamente.
fonte
http_response_code(404); exit();
. Se você deseja uma página, useget_template_part( 404 );
antes de sair. Isso também é muito mais rápido do que qualquer funcionalidade wordpress.Você pode escrever esse código no arquivo 404.php no diretório de temas realmente usado (wp-content / themes /..../ 404.php) :
Esse código deve começar do início do arquivo (sem caracteres antes) .
Link para o original: Como redirecionar sua página 404 para a Home Page no WordPress
fonte
Location: xxx
define um cabeçalho 301, que informa aos rastreadores que há realmente um recurso válido e mata sua classificação quando eles determinam que não existe.Eu tinha um requisito semelhante no qual não deveria permitir que os usuários acessassem a página author.php com base na função em que ele estava. Registro a ação template_redirect para fazer minhas verificações e redirecionar para a página 404, mesmo antes de a página real ser carregada.
Cadastro:
Manipulador:
Se você optar por usar apenas o seguinte snippet de código no meio da parte do modelo, a página já poderá ter sido renderizada parcialmente e você não será realmente redirecionado para uma página 404. Tão melhor fazê-lo na
template_redirect
ação -fonte