У меня есть веб-сайт с проектами, которые используют AdvancedCustomFields для хранения информации, такой как «автор», в качестве отношения, связывающего страницу автора непосредственно со страницей проекта. Я хочу, чтобы мой клиент мог искать этого автора в списке постов в WordPress и отображать все проекты этого автора, но все бесплатные плагины, которые я нахожу, могут искать только поля «текст» или «текстовая область».
То, что я пробовал, было тогда:
add_filter( 'posts_join', 'pts_search_join' );
function pts_search_join ( $join ) {
global $pagenow, $wpdb;
if ( is_admin() && 'edit.php' === $pagenow && ! empty( $_GET['s'] ) ) {
$join .= 'LEFT JOIN ' . $wpdb->postmeta . ' ON ' . $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
}
return $join;
}
add_filter( 'posts_where', 'pts_search_where' );
function pts_search_where( $where ) {
global $pagenow, $wpdb;
if ( is_admin() && 'edit.php' === $pagenow && ! empty( $_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 );
}
return $where;
}
Хотя я не ищу никаких проектов, когда я ищу подключенного автора.