@SASHIKUBIVATOR

Как настроить url фильтр с помощью категорий wordpress?

Всем привет, есть вот такой фильтр: 61af8f5e05c03650881980.jpeg он, в зависимости от значений меняет url адрес без перезагрузки страницы с помощью AJAX. Его проблема в том, что он фильтрует контент только если начинать с первого значения, сейчас максимум, что я придумал это сделать большие категории типа otdelno-goroda и теперь можно фильтровать контент по большим категориям (сайт.ру/otdelno-goroda/gorod-moskva), но это не решает проблему если мне нужна ссылка типа сайт.ру/kontekstnaya-reklama/russia, он не может фильтровать по нескольким параметрам. Бьюсь с этим целый день, не понимаю как решить.
Также есть страница категорий: 61af8eb58b783767297072.jpeg в ней я и создал большие блоки типа kontekstnaya reklama. Правда не понимаю как сделать урлы, которые нужны, помогите, пожалуйста.
'public'             => true,
		'publicly_queryable' => true, // ЧТОБЫ ОТКЛЮЧИТЬ ССЫЛКИ НУЖНО ВСТАВИТЬ FALSE
		'show_ui'            => true, //true для лендинга
		'show_in_menu'       => true,
		'menu_icon'           => 'dashicons-networking', 
		'query_var'          => true,
		'rewrite'            => true,
		'capability_type'    => 'post',
		'has_archive'        => true, //archive
		'with_front' => true,
		'hierarchical'       => false,
		'menu_position'      => null,
		'supports'           => array('title'),
        //'taxonomies'          => array( 'category' )
	) );
    //END one

}

add_action('init', 'wwa_post_types');

add_action( 'init', 'create_portfolio_taxonomies', 0 );

function create_portfolio_taxonomies(){
  $labels = array(
    'name' => _x( 'Категории', 'taxonomy general name' ),
    'singular_name' => _x( 'Категории', 'taxonomy singular name' ),
    'search_items' =>  __( 'Найти Категории' ),
    'all_items' => __( 'Все Категории' ),
    'parent_item' => __( 'Родительская Категория' ),
    'parent_item_colon' => __( 'Родительская категория' ),
    'edit_item' => __( 'Родительская категория' ),
    'update_item' => __( 'Обновить категорию' ),
    'add_new_item' => __( 'Добавить новую категорию' ),
    'new_item_name' => __( 'Название новой категории' ),
    'menu_name' => __( 'Категории' ),
  );

  register_taxonomy('portfolio-category', array('portfolio'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'portfolio-category' ),
  ));

}




add_action( 'init', 'create_reviews_taxonomies', 0 );

function create_reviews_taxonomies() {
  $labels = array(
    'name' => _x( 'Категории', 'taxonomy general name' ),
    'singular_name' => _x( 'Категории', 'taxonomy singular name' ),
    'search_items' =>  __( 'Найти Категории' ),
    'all_items' => __( 'Все Категории' ),
    'parent_item' => __( 'Родительская Категория' ),
    'parent_item_colon' => __( 'Родительская категория' ),
    'edit_item' => __( 'Родительская категория' ),
    'update_item' => __( 'Обновить категорию' ),
    'add_new_item' => __( 'Добавить новую категорию' ),
    'new_item_name' => __( 'Название новой категории' ),
    'menu_name' => __( 'Категории' ),
  );

  register_taxonomy('review', array('reviews'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'review' ),
  ));

}


add_action( 'init', 'create_services_taxonomies', 0 );

function create_services_taxonomies(){
  $labels = array(
    'name' => _x( 'Категории', 'taxonomy general name' ),
    'singular_name' => _x( 'Категории', 'taxonomy singular name' ),
    'search_items' =>  __( 'Найти Категории' ),
    'all_items' => __( 'Все Категории' ),
    'parent_item' => __( 'Родительская Категория' ),
    'parent_item_colon' => __( 'Родительская категория' ),
    'edit_item' => __( 'Родительская категория' ),
    'update_item' => __( 'Обновить категорию' ),
    'add_new_item' => __( 'Добавить новую категорию' ),
    'new_item_name' => __( 'Название новой категории' ),
    'menu_name' => __( 'Категории' ),
  );

  register_taxonomy('service-category', array('servises'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'service-category' ),
  ));
}
//nicks test countries
add_action( 'init', 'create_town_taxonomy', 0 );

function create_town_taxonomy(){
    $labels = array(
        'name' => _x( 'Cтраны', 'taxonomy general name' ),
        'singular_name' => _x( 'Cтрана', 'taxonomy singular name' ),
        'search_items' =>  __( 'Найти страны' ),
        'all_items' => __( 'Все страны' ),
        'parent_item' => __( 'Категория' ),
        'parent_item_colon' => __( 'Категория' ),
        'edit_item' => __( 'Страна' ),
        'update_item' => __( 'Обновить страну' ),
        'add_new_item' => __( 'Добавить новую страну' ),
        'new_item_name' => __( 'Название новой страны' ),
        'menu_name' => __( 'Cтраны' ),
    );

    register_taxonomy('country', array('towns'), array(
        'hierarchical' => true,
        'labels' => $labels,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'country' ),
    ));
}

function true_taxonomy_filter() {
	global $typenow; // тип поста
	if( $typenow == 'portfolio'){ // для каких типов постов отображать
		$taxes = array('portfolio-category'); // таксономии через запятую
		foreach ($taxes as $tax) {
			$current_tax = isset( $_GET[$tax] ) ? $_GET[$tax] : '';
			$tax_obj = get_taxonomy($tax);
			$tax_name = mb_strtolower($tax_obj->labels->name);
			// функция mb_strtolower переводит в нижний регистр
			// она может не работать на некоторых хостингах, если что, убирайте её отсюда
			$terms = get_terms($tax);
			if(count($terms) > 0) {
				echo "<select name='$tax' id='$tax' class='postform'>";
				echo "<option value=''>Все $tax_name</option>";
				foreach ($terms as $term) {
					echo '<option value='. $term->slug, $current_tax == $term->slug ? ' selected="selected"' : '','>' . $term->name .' (' . $term->count .')</option>'; 
				}
				echo "</select>";
			}
		}
	}
}
 
add_action( 'restrict_manage_posts', 'true_taxonomy_filter' );


add_action( 'init', 'gp_register_taxonomy_for_object_type' );
function gp_register_taxonomy_for_object_type() {
    register_taxonomy_for_object_type( 'post_tag', 'reviews' );
};
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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