404 로직을 변경하는 후크가 있습니까?


27

테마에 404 페이지가 정의되어 있으면 $ wp_query-> query_vars에 "tag"가 정의되어 있고 해당 태그와 일치하는 게시물이없는 경우 Wordpress에 404 페이지가 표시됩니다.

게시물 외에도 각 페이지에 몇 가지 정보를 표시하는 플러그인을 작성 중입니다. 태그 일치하는 게시물이없고 플러그인이 해당 태그 일치하는 데이터를 가져올 수없는 경우 404 페이지가 표시되도록 404 로직을 변경하고 싶습니다 . 플러그인이 데이터를 찾을 수 있다면 해당 페이지에 게시물이 있는지 여부에 관계없이 일반 페이지를 표시하고 싶습니다 ...

나는 인터넷 검색, 코드 읽기, 코덱스 읽기 및 주변을 파고 왔으며 Wordpress가 404를 트리거하는 위치와이를 무시할 수있는 방법을 알 수 없었습니다. (functions.php의 status_header ()와 관련이 있다고 생각하지만 언제 어떻게 연결 해야하는지 명확하지 않습니다.)

도움 / 아이디어 / 깨달음에 감사드립니다.

고맙습니다,

~ 패치

답변:


29

코드와 인터넷 검색을 통해 조금 더 slogging 한 후 답을 찾았습니다. 이 스레드에 포함되어 있지만 (Otto42의 게시물 참조) 레코드의 경우 플러그인에 다음을 추가하면 지정한 조건에 대한 404 처리가 재정의됩니다.

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

PHP가 헤더를 출력하기 전에 "is_404"를 false로 설정해야하므로 template_redirect 논리에 헤더를 연결하는 것이 좋습니다.

~ 패치


5

항상 200 페이지가있는 사용자 정의 프로젝트에 대해서도 동일한 작업을 수행해야했으며 템플릿 파일 맨 위에 get_header ();)를 추가 할 수도 있습니다.

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

1
큰! 이것은 나를 위해 일했습니다. 스크립트를 만들고 404를 생성했습니다. wp-> main에서 runnig 스크립트를 사용해 보았지만 완전히 깨끗한 솔루션은 아닙니다. 이것은 나를 위해 일했다 :// configuration require('./wp-load.php'); // init WP (inits objects, language and stuff). wp(); // fix title (this is not 404) $wp_query->is_404 = false; // doesn't fix the actual 404 status status_header( 200 ); // but this does :-)
Nux

1

404.php테마에서 템플릿 파일을 작성 하고 필요에 따라 사용자 정의하십시오 (플러그인 출력 추가 등). 당신 은 당신의 주제에 정의 된 언급 , 당신 을 위해이 접근법에 정확히 무엇이 잘못 되었습니까?

코덱 오류 404 페이지 만들기


내가 찾고있는 것은 404 페이지가 트리거되는 환경을 변경하는 방법입니다. 현재 Wordpress가 쿼리 변수에서 태그와 일치하는 게시물을 찾을 수 없으면 404 페이지가 나타납니다. Wordpress에서 게시물을 찾을 수없고 플러그인에서 표시 할 추가 정보를 찾을 수없는 경우에만 404 페이지가 표시되도록하는 추가 코드를 추가 하고 싶습니다.
Patch

404의 목적은 방문자가 링크가 잘못되었다는 것을 알리고이를 기록하고 수정하는 것입니다 (필요한 경우). 방문자에게 끊어진 링크를 사용하고 있다고 알리거나 직접 알고 싶지는 않습니다. 404에 정보를 표시하는 것은 잘 작동하며, 납치 할 필요는 없습니다. 왜 귀찮게합니까? 논리 및 / 또는 기술을 파악하려고합니다.
Rarst

1
내가 찾던 것은 "잘못된"페이지의 정의를 변경하는 방법이었습니다. 내가 만들고있는 사이트에는 블로그 구성 요소가 있지만 이것이 전부는 아닙니다. Wordpress 태그를 사용하여 Wordpress 게시물을 표시하고 플러그인을 통해 추가 콘텐츠를 가져옵니다. a) 게시물이 있거나 b) 플러그인에서 태그와 일치하는 항목을 찾을 수있는 경우 200 상태 코드를 반환하고 싶습니다. 따라서 논리를 다시 연결해야합니다. 어쨌든, 답변을 작성하는 데 시간을내어 주셔서 감사합니다. 내 문제가 좀 더 복잡한 답변을 필요로하기에 이상하다는 점에 대해 죄송합니다. :-)
Patch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.