function list_searcheable_acf() { $list_searcheable_acf = [ 'page_text', 'page_brd_title', 'page_brd_text', 'page_cnt_title', 'page_prj_title', 'page_prj_text', 'page_frl_title', 'page_frl_text', 'cnt_fname', 'cnt_sname', 'cnt_post', 'cnt_contacts', 'cnt_text', ]; return $list_searcheable_acf; } /** * [advanced_custom_search search that encompasses ACF/advanced custom fields and taxonomies and split expression before request] * @param [query-part/string] $where [the initial "where" part of the search query] * @param [object] $wp_query [] * @return [query-part/string] $where [the "where" part of the search query as we customized] * see https://vzurczak.wordpress.com/2013/06/15/extend-the-default-wordpress-search/ * credits to Vincent Zurczak for the base query structure/spliting tags section */ function advanced_custom_search($where, $wp_query) { global $wpdb; if (empty($where)) return $where; // get search expression $terms = $wp_query->query_vars['s']; // https://trello.com/c/JYKEOORU/27-поиск-на-глобал#comment-5e9435ad5214d57738ad73a1 // изменение порядка вывода по запросу $wp_query->query_vars['orderby'] = 'date'; $wp_query->query_vars['order'] = 'desc'; $wp_query->query_vars['search_orderby_title'] = []; // \Dk\Helper\Utils::dump($wp_query); // explode search expression to get search terms $exploded = explode(' ', $terms); if ($exploded === FALSE || count($exploded) == 0) $exploded = array(0 => $terms); // reset search in order to rebuilt it as we whish $where = ''; // get searcheable_acf, a list of advanced custom fields you want to search content in $list_searcheable_acf = list_searcheable_acf(); foreach ($exploded as $tag) { $where .= " AND ( ($wpdb->posts.post_title LIKE '%$tag%') OR ($wpdb->posts.post_content LIKE '%$tag%') OR EXISTS ( SELECT * FROM $wpdb->postmeta WHERE post_id = $wpdb->posts.ID AND ("; foreach ($list_searcheable_acf as $searcheable_acf) : if ($searcheable_acf == $list_searcheable_acf[0]) : $where .= " (meta_key LIKE '%" . $searcheable_acf . "%' AND meta_value LIKE '%$tag%') "; else : $where .= " OR (meta_key LIKE '%" . $searcheable_acf . "%' AND meta_value LIKE '%$tag%') "; endif; endforeach; $where .= ") ) )"; } return $where; } add_filter('posts_search', 'advanced_custom_search', 500, 2); use Dk\Helper\Utils; use Dk\Helper\Models; $postId = get_the_ID(); Utils::columnsRedirects($postId); $blocks = []; $block['authors'] = Models::getAuthors([$postId]); set_query_var('dk_model_cover_image', '/blocks.basic/dk-cover/__images/cover-6.png'); set_query_var('dk_model_authors', $block['authors']); set_query_var('dk_model_authors_per_page', 9); set_query_var('dk_model_authors_hide_more', true); $page = get_page_by_path('/about/authors/'); set_query_var('dk_model_cover_data', ['title' => $page->post_title]); $terms = get_terms(array( 'taxonomy' => 'alphabet', 'hide_empty' => true, )); $letter = $terms[0]->slug; $authorTerms = wp_get_post_terms($postId, 'alphabet'); if ($authorTerms) { $letter = $authorTerms[0]->slug; } set_query_var('dk_model_alphabet_data', ['terms' => $terms, 'letter' => $letter]); ?> get_header(); ?>