我有一个自定义的帖子类型,在CMS我将能够改变搜索,所以它只搜索文章的标题,然后还拉过该页的所有子页面。
目前我有以下内容,这确实限制了搜索标题,但我正在努力如何最好地通过子页面拉并在此查询中返回它们。
add_filter( 'posts_search', 'admin_search_shops', null, 2 );
function admin_search_shops( $search, $a_wp_query ) {
if ( !is_admin() ) return $search;
$search = preg_replace( "# OR '(.*posts'.post_content LIKE '''%.*%'''')#", "", $search );
return $search;
}
与其尝试重构一个复杂的SQL查询,不如将子查询添加到最后的'posts_results'过滤器中,这样会简单得多。结合您已经完成的工作(将搜索限制在标题内),以下内容将添加任何子页面。
add_filter( 'posts_results', 'admin_postsearch_shops', null, 2);
function admin_postsearch_shops( $posts ) {
foreach( $posts as $post ) {
$args = array( 'post_parent' => $post->ID);
foreach ( get_children( $args ) as $child ) {
$posts[] = $child;
}
}
return $posts;
}