Поиск значений ACF (отношений) в бэкэнде WordPress - PullRequest
0 голосов
/ 27 января 2020

У меня есть веб-сайт с проектами, которые используют 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;
}

Хотя я не ищу никаких проектов, когда я ищу подключенного автора.

...