@artva

Как добавить в поиск термины таксономии Wordpress?

Ребята, помогите найти решение - нужно чтоб в результаты поиска попадали название и описание таксономий. Тоесть чтобы производился поиск по самим терминам таксономии (поля - заголовок, краткое описание, кастомное поле с расширенным описанием), а не только по записям и страницам. Пробовал ставить плагин расширенного поиска Ajax Search Pro, но он тоже не помог. Заранее спасибо за ответы.
  • Вопрос задан
  • 366 просмотров
Пригласить эксперта
Ответы на вопрос 1
PavelK
@PavelK
Придётся нырять в дебри говнокодца т.к. у Вордпресса с этим не так всё просто.
Если вкратце - нужно вручную переписать sql запрос:

add_filter('posts_join', array(&$this, 'maginza_search_join' ));
		add_filter('posts_where', array(&$this,'maginza_search_where' ));
		add_filter('posts_groupby', array(&$this,'maginza_search_groupby'));

	function maginza_search_join($join) {
		global $wpdb;
		if( is_search() ) {
			
			 $join .= 'LEFT JOIN '.Options::$table_meta.' ON wp_maginzameta.maginza_id=wp_posts.ID';			
		}
		return $join;
	}

	function maginza_search_where( $where )	{ 
		global $wpdb;
		if( is_search() ) {
			
			$findkeys='';			
			$where = preg_replace('/post_title LIKE \'(.*?)\'\)/', 'post_title LIKE  \'$1\') OR ( (FIND_IN_SET(wp_maginzameta.meta_key, \''.$findkeys.'\')) AND  (wp_maginzameta.meta_value LIKE \'$1\') ) ', $where );
		}
		return $where;
	}

	function maginza_search_groupby( $groupby )	{
		if( !is_search() ) {
			return $groupby;
		}
		$groupby="wp_posts.ID";
		return $groupby;
	}


Что бы понять - сначала составьте запрос в PHPMyAdmin или тем, чем пользуетесь для администрирования базы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы