Всем привет, есть вот такой фильтр:
он, в зависимости от значений меняет url адрес без перезагрузки страницы с помощью AJAX. Его проблема в том, что он фильтрует контент только если начинать с первого значения, сейчас максимум, что я придумал это сделать большие категории типа otdelno-goroda и теперь можно фильтровать контент по большим категориям (сайт.ру/otdelno-goroda/gorod-moskva), но это не решает проблему если мне нужна ссылка типа сайт.ру/kontekstnaya-reklama/russia, он не может фильтровать по нескольким параметрам. Бьюсь с этим целый день, не понимаю как решить.
Также есть страница категорий:
в ней я и создал большие блоки типа 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' );
};