관리자 검색에 메타 데이터를 추가하는 코드 스 니펫으로 놀고있었습니다.
내가 찾은 최고의 스 니펫은 Stefano 가이 질문에 대해 작성했습니다 .
그러나 메타가 아닌 용어를 검색 할 때 1 성가신 버그가있는 것으로 보입니다.
다음은 로컬 개발 설치에서 가져온 것입니다. 2 개의 MySQL 쿼리를 화면에 인쇄했습니다.
테스트에 사용중인 단일 CPT 게시물보기
이것은 예상대로 작동하는 코드이며 관리자에서 메타 데이터를 검색 할 수 있습니다
불행히도 코드는 메타가 아닌 일치 항목 (이 경우 게시물 제목)에 중복을 만듭니다
Dupe의 게시물 상태, 게시물 유형 및 게시물 조상을 보여주는 잡기
! Dupe의 게시물 상태, 게시물 유형 및 게시물 조상을 보여주는 잡기
다음은 내가 실행중인 코드입니다. 기본적으로 Stefano와 동일하지만 쿼리를 작동시키려는 저의 시도가 있습니다.
/*
* Search custom fields from admin keyword searches
*/
function rel_search_join( $join ) {
global $pagenow, $wpdb;
if ( is_admin() && $pagenow == 'edit.php' && $_GET['post_type'] == 'listings' && $_GET['s'] != '') {
$join .= 'LEFT JOIN ' . $wpdb->postmeta . ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
}
echo '<br><strong>JOIN</strong>: ';
print_r ( $join );
echo '<br>';
return $join;
}
add_filter('posts_join', 'rel_search_join' );
function rel_search_where( $where ) {
global $pagenow, $wpdb;
if ( is_admin() && $pagenow == 'edit.php' && $_GET['post_type']=='listings' && $_GET['s'] != '' ) {
$where = preg_replace( "/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/", "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where );
$where = str_replace( "OR wp_posts.post_status = 'pending'", "", $where );
$where = str_replace( "OR wp_posts.post_status = 'private'", "", $where );
$where = str_replace( "OR wp_posts.post_status = 'draft'", "", $where );
$where = str_replace( "OR wp_posts.post_status = 'future'", "", $where );
}
echo '<br><strong>WHERE</strong>: ';
print_r ( $where );
echo '<br>';
return $where;
}
add_filter( 'posts_where', 'rel_search_where' );
어쩌면 수정 사항도 나열되어 있습니까?
—
passatgt
보류중인 개인, 초안 및 미래를 제거했기 때문에 게시 만보고 있다고 생각했습니다. 개정 유형을 보지 못했습니다.
—
jnthnclrk
흠, "개정"상태가 아닌 것 같습니다 : codex.wordpress.org/Post_Status
—
jnthnclrk
열 중 하나에서 게시물 유형 또는 게시물 ID를 print_r하려고하면 수정본이 게시물 유형이라고 생각하므로 개정판을 볼 수 있으면 결과에도 표시됩니다. 그러나 목록 게시물 유형의 결과 만 표시한다는 것을 알 수 있으므로 잘못된 것 같습니다. 그러나 시도해 볼만한 가치가 있습니다 :)
—
passatgt
게시물 상태, 게시물 유형 및 게시물 조상과 함께 새로운 횡령을 추가했습니다.
—
jnthnclrk