S
S
SASHIKUBIVATOR2021-12-07 19:53:35
AJAX
SASHIKUBIVATOR, 2021-12-07 19:53:35

How to set up a url filter using wordpress categories?

Hello everyone, there is such a filter: 61af8f5e05c03650881980.jpegdepending on the values, it changes the url address without reloading the page using AJAX. Its problem is that it filters content only if it starts from the first value, now the maximum that I came up with is to make large categories like otdelno-goroda and now you can filter content by large categories (site.ru/otdelno-goroda/gorod-moskva ), but this does not solve the problem if I need a link like site.ru/kontekstnaya-reklama/russia, it cannot filter by several parameters. I've been struggling with this all day, I don't understand how to solve it.
There is also a category page: 61af8eb58b783767297072.jpegin it I created large blocks like kontekstnaya reklama. I really don’t understand how to make the urls that are needed, please help.

'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' );
};

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question