it-swarm-pt.tech

Existem ganchos que alteram a comunicação 404?

Desde que você tenha uma página 404 definida em seu tema, o Wordpress exibirá uma página 404 se "tag" estiver definido em $ wp_query-> query_vars, e não houver posts correspondentes a essa tag.

Estou escrevendo um plugin que exibe algumas informações em cada página, além de posts. Eu gostaria de alterar a lógica 404 para que a página 404 seja exibida se não houver posts correspondentes a uma tag e o plugin não pode extrair nenhum dado que corresponda a essa tag. Se o plug-in puder encontrar dados, eu gostaria de mostrar uma página normal, independentemente de haver ou não postagens nessa página ...

Estive pesquisando, lendo código, lendo o códice e pesquisando por aqui, e não consegui descobrir onde o Wordpress dispara esse 404, e como posso substituí-lo. (Eu tenho a sensação de que pode ter algo a ver com status_header () em functions.php, mas não está claro como e quando eu preciso me conectar a ele).

Qualquer ajuda/idéias/iluminação apreciada.

Obrigado,

~ Patch

25
Patch

Depois de um pouco mais slogging através do código e pesquisando, encontrei a resposta. Está contido em this thread (veja o post de Otto42), mas para o registro, adicionando o seguinte ao seu plugin irá sobrescrever o tratamento 404 para as condições que você especificar:

add_filter('template_redirect', 'my_404_override' );
function my_404_override() {
    global $wp_query;

    if (<some condition is met>) {
        status_header( 200 );
        $wp_query->is_404=false;
    }
}

Note que você precisa definir "is_404" para false antes de PHP gerar cabeçalhos, e é por isso que conectá-lo na lógica template_redirect é uma boa idéia.

~ Patch

27
Patch

Eu precisava fazer o mesmo para um projeto personalizado, onde sempre havia uma página de 200, e descobri que você também pode simplesmente adicionar isso ao topo do seu arquivo de modelo (acima de get_header ();)

global $wp_query;
status_header( 200 );
$wp_query->is_404=false;
5
noinput

Crie o arquivo de modelo 404.php no seu tema e personalize conforme necessário (adicionando a saída do seu plugin ou o que for). Você mencionou definido em seu tema , o que exatamente está errado com essa abordagem para você?

Codex Criando uma página de erro 404

1
Rarst