관리자에서 ID로 게시물 검색


10

ID별로 게시물을 검색하는 방법을 찾고 있는데, 사용자 지정 게시물 유형을 지원하는 것이 좋습니다. 이 기능을 활성화하는 플러그인이 있기를 바랐지만 아무것도 찾지 못했습니다. 어떤 아이디어라도 대단히 감사하겠습니다. 감사합니다.


ID 별 검색의 의미, 모든 게시물에 고유 한 ID가 있음을 설명 할 수 있습니까?이 검색에서 단일 결과 이상을 얻을 수있는 방법은 무엇입니까?
t31os

@ t31os 단일 결과는 내가 원하는 것입니다 :). 관리자 백엔드에서 ID로 게시물을 검색 할 수 있다고 말합니다. domain.com/wp-admin/edit.php 로 이동 하면 상단에 검색 필드가 있으며 게시물 제목을 검색하여 게시물을 쉽게 찾을 수 있습니다. 동일한 작업을 수행 할 수 있어야하지만 ID를 사용해야합니다. '1343'을 입력하고 '검색'을 누르면 게시물 # 1343이 표시됩니다.
pereyra

프론트 엔드 검색에서 어떻게 작동합니까?
chrispo

답변:


13

왜 당신이 ID로 쿼리하고 싶어하는지 이해하지 못하지만, 해킹 된 방식으로 가능하다고 말했습니다 (간단하기 때문에이 방법이 마음에 듭니다).

add_action( 'parse_request', 'idsearch' );
function idsearch( $wp ) {
    global $pagenow;

    // If it's not the post listing return
    if( 'edit.php' != $pagenow )
        return;

    // If it's not a search return
    if( !isset( $wp->query_vars['s'] ) )
        return;

    // If it's a search but there's no prefix, return
    if( '#' != substr( $wp->query_vars['s'], 0, 1 ) )
        return;

    // Validate the numeric value
    $id = absint( substr( $wp->query_vars['s'], 1 ) );
    if( !$id )
        return; // Return if no ID, absint returns 0 for invalid values

    // If we reach here, all criteria is fulfilled, unset search and select by ID instead
    unset( $wp->query_vars['s'] );
    $wp->query_vars['p'] = $id;
}

그런 다음 #숫자 ID 앞에 (해시) 접두사 를 사용하여 일반 검색 상자를 사용하여 검색 하면됩니다.

#123

..ID가 123 인 게시물을 반환합니다.

이 작업을 수행 할 수있는 더 복잡한 경로가 있다고 확신하지만 해시로 시작하는 제목이있는 게시물이 많지 않으면이 방법에 아무런 문제가 없습니다 (그러나 항상 해시를 바꿀 수는 있습니다) 다른 캐릭터).

희망이 도움이됩니다. :)


@ t310s이 작동합니다, 너무 감사합니다! 내가 얻는 유일한 (순전히 장식적인) 문제는 내가 얻는 검색 결과의 맨 위에“”에 대한 검색 결과 —“# 123”에 대한 검색 결과가 이상적이라는 것입니다. 그렇지 않으면 이것이 바로 내가 필요한 것입니다. 다시 감사합니다.
pereyra

그것은 쿼리 직전에 검색어를 설정 해제하는 불행한 부작용이지만, 이제 edit.php를 다시 보았습니다. 쉬운 수정을 볼 수 있습니다 ... :) unset()다음에 대한 호출을 업데이트하십시오 .. unset( $wp->query_vars['s'], $_GET['s'] );및 검색 아이디 검색을 할 때 장기 텍스트는 도움말을 .. PS의 행복을 사라집니다 .. :)
t31os

매우 늦은 시간에이 게시물을 우연히 발견했으며 get_search_query필터 에 연결하여 검색 결과를 다시 채울 수 있습니다. add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.