Intereting Posts
Почему WP не использует относительные ссылки при связывании страниц? get_posts, которые соответствуют заданному пользователем значению на странице Создание настраиваемой панели администратора Удаление «www» с URL-адреса сайта WP_Query Исключение страниц с порядком – 0 Добавить кнопку в редакторе TinyMCE для вставки текста Мне нужно «wp_dequeue_script» и «styles» и добавить кучу других css и js Ограничить роль пользователя Автор от просмотра комментариев в интерфейсе администратора Начните с многосайтовой функции сейчас или позже? CSS не отображается в сообщении, а просто отображается как текст Как использовать мета-тег канонического URL, чтобы избежать дублирования проблем с домашними страницами WP Как отображать несколько изображений из сообщения на главной странице Заказ пользовательского типа сообщений несколькими настраиваемыми полями Форма submit in admin не устанавливает is_admin () true Как создать подкатегорию для пользовательского типа сообщений?

Пользовательская таксономия на постоянной основе

У меня есть давняя проблема и с нетерпением жду вашей помощи. У меня есть обычная таксономия «города» (это не иерархические теги). Я просто хочу, чтобы мои URL-адреса выглядели следующим образом:

/%city%/%category%/%postname%/ 

Так что это то, что мне нравится делать.

  • http://example.com/city/moscow – Показать все сообщения в таксономии город-Москва.
  • http://example.com/category/shopping – Показать все сообщения в этой категории и всех городах.
  • http://example.com/category/shopping/supermarket – Показать все сообщения в этой категории и всех городах.
  • http://example.com/moscow/shopping/ -Открыть все сообщения в этой категории в Москве.
  • http://example.com/moscow/shopping/supermarket/ – Показать все сообщения в этой категории -child в Москве.
  • http://example.com/moscow/shopping/supermarket/postname – Показать сообщение.

Я сделал следующее :

  1. Сначала я создал обычную таксономию – город.
  2. Я добавил код в function.php
 function add_custom_taxonomies_city() { register_taxonomy('city', 'post', array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'City', 'taxonomy general name' ), 'search_items' => __( 'Search cities' ), 'all_items' => __( 'All cities' ), 'parent_item' => __( 'Parent Categories' ), 'parent_item_colon' => __( 'Parent Categories:' ), 'edit_item' => __( 'Edit city' ), 'update_item' => __( 'Update city' ), 'add_new_item' => __( 'Add city' ), 'new_item_name' => __( 'New city' ), 'menu_name' => __( 'cities' ), ); ), 'rewrite' => array( 'slug' => 'city', 'with_front' => false, 'hierarchical' => false ), )); } add_action( 'init', 'add_custom_taxonomies_city', 0 ); add_filter('post_link', 'town_permalink', 10, 3); add_filter('post_type_link', 'town_permalink', 10, 3); function town_permalink($permalink, $post_id, $leavename) { if (strpos($permalink, '%city%') === FALSE) return $permalink; // Get post $post = get_post($post_id); if (!$post) return $permalink; // Get taxonomy terms $terms = wp_get_object_terms($post->ID, 'city'); if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug; else $taxonomy_slug = 'not-city'; return str_replace('%city%', $taxonomy_slug, $permalink); } 

Результат :

  • http://example.com/city/moscow – Работает
  • http://example.com/category/shopping – Работает
  • http://example.com/category/shopping/supermarket/ – Работает
  • http://example.com/moscow/shopping/ – Работает
  • http://example.com/moscow/shopping/supermarket/ – Это не !!!!!
  • http://example.com/moscow/shopping/supermarket/postname – Это не !!!!!

Этот пост имеет следующую ссылку: http: //mysite.ru/ moscow/shopping/postname

Но мне нужны ссылки, чтобы содержать дочернюю категорию.

  1. Я попытался решить задачу с помощью другого варианта: я добавил следующий код в функцию. PHP
 function addRoutes() { add_rewrite_tag('%city%', '(.+?)'); add_rewrite_rule('(.+?)/(.+?)/([^/]+)(/[0-9]+)?/?$', 'index.php?city=$matches[1]&category_name=$matches[2]&name=$matches[3]&page=$matches[4]', 'top'); add_rewrite_rule('(.?.+?)(/[0-9]+)?/?$', 'index.php?pagename=$matches[1]&page=$matches[2]', 'top'); flush_rewrite_rules(); } add_action('init', 'addRoutes'); 

В результате

http://example.com/city/moscow – Страница не найдена Ошибка 404. http://example.com/category/shopping – Страница не найдена ошибка 404 .. http://example.com/category/shopping/supermarket/ – Страница не найдена ошибка 404 .. http://example.com/moscow/shopping/supermarket/postname -400 ошибка

Кажется, что сущность не понимает% city% Что не так? С нетерпением ждем вашей помощи. Кто-нибудь может мне помочь? Большое спасибо!


Я решил изменить структуру URL-адресов на:

  • example.com/city/moscow/category/shopping/ -Открыть все сообщения в этой категории в Москве.
  • example.com/city/moscow/category/shopping/supermarket/ – Показать все сообщения в этой категории -child в Москве.
  • example.com/city/moscow/category/shopping/supermarket/postname – Показать сообщение.

Код:

 // Правила перезаписи
 function eg_add_query_vars ($ query_vars) {
     $ new_vars = массив ('город');

     return array_merge ($ new_vars, $ query_vars);
 }
 add_filter ('query_vars', 'eg_add_query_vars');

 функция eg_add_rewrite_rules () {
     глобальный $ wp_rewrite;

     $ new_rules = array (
         'city /(.+?)/ category /(.+?)/?$' => 'index.php? city ='.  $ wp_rewrite-> preg_index (1).  '& category_name ='.  $ Wp_rewrite-> preg_index (2),
 'city /(.+?)/ category /(.+?)/(.+?)/?$' => 'index.php? city ='.  $ wp_rewrite-> preg_index (1).  '& category_name ='.  $ wp_rewrite-> preg_index (2).  '& Имя_категории ='.  $ Wp_rewrite-> preg_index (3),

 //'city/(.+?)/category/(.+?)/(.+?)/(.+?)/?$ '=>' index.php? city = '.  $ wp_rewrite-> preg_index (1).  '& category_name ='.  $ wp_rewrite-> preg_index (2).  '& Имя_категории ='.  $ Wp_rewrite-> preg_index (3).  '& Страница ='.  $ wp_rewrite-> preg_index (4), // Это я стараюсь написать правило для сообщений (не работает)   
         );
     $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> правила;
 }
 add_action ('generate_rewrite_rules', 'eg_add_rewrite_rules');


 // создание постоянной ссылки:
 function city_permalink ($ permalink, $ post_id, $ leavename) {
     if (strpos ($ permalink, '% city%') === FALSE) возвращает $ permalink;

         // Получить сообщение
         $ post = get_post ($ post_id);
         if (! $ post) return $ permalink;

         // Получить таксономические условия
         $ terms = wp_get_object_terms ($ post-> ID, 'город');  
         if (! is_wp_error ($ terms) &&! empty ($ terms) && is_object ($ terms [0])) $ taxonomy_slug = $ terms [0] -> slug;
         else $ taxonomy_slug = 'not-city';

     return str_replace ('% city%', $ taxonomy_slug, $ permalink);}

     функция wp_town_query ($ query) {
     if (isset ($ query-> query_vars ['city'])):
         if ($ city = get_term_by ('id', $ query-> query_vars ['city'], 'city'))
             $ query-> query_vars ['town'] = $ city-> slug;
     ENDIF;
 }
 add_action ('parse_query', 'wp_city_query');

Мои настройки в Permalink admin page: city /% city% / category /% category% /% postname% /

в результате у меня есть: – example.com/city/moscow/category/shopping/ -works – example.com/city/moscow/category/shopping/supermarket/ – работает, но все же я не могу понять, как написать правило для сообщений: – example.com/city/moscow/category/shopping/supermarket/postname – нет. Пейджинг тоже не работает.

Я буду рад получить совет!

Это работает:


 'city /(.+?)/ category /(.+?)/(.+?)/([^/]+)/?$' => 'index.php? city ='.  $ wp_rewrite-> preg_index (1).  '& category_name ='.  $ Wp_rewrite-> preg_index (2).  '& category_name ='.  $ Wp_rewrite-> preg_index (3).  '& name ='.  $ Wp_rewrite-> preg_index (4), 
 'city /(.+?)/ category /(.+?)/ page /? ([0-9] {1,}) /? $' => 'index.php? city ='.  $ wp_rewrite-> preg_index (1).  '& category_name ='.  $ Wp_rewrite-> preg_index (2).  '& paged ='.  $ Wp_rewrite-> preg_index (3),
 'city /(.+?)/ category /(.+?)/?$' => 'index.php? city ='.  $ wp_rewrite-> preg_index (1).  '& category_name ='.  $ Wp_rewrite-> preg_index (2),  

Solutions Collecting From Web of "Пользовательская таксономия на постоянной основе"

Хорошо, поэтому я получу отрицательные моменты для этого, но он должен решить вашу проблему, пожалуйста, не сердитесь на меня. Прежде чем кто-нибудь запустит меня для этого, я должен сказать, что я не имею никакого отношения к разработчикам этого плагина:

Для пользовательских таксономий и пользовательских типов сообщений я часто использую плагин с именем « Типы ». вы можете найти его в установочных плагинах в меню wordpress и должны сделать трюк для вас без какой-либо кодировки.