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

    @SASHIKUBIVATOR Автор вопроса
    Артем Золин,
    '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' );
    };