Intereting Posts
Открыть детали вложений Создать массив из данных в таблице OPTIONS translate_user_role не работает Предотвращение удаления виджетов Фильтрация нескольких терминов в таксономии в WP Только категория списка, если у него есть пользовательское полевое изображение Неопределенное свойство: stdClass :: $ labels в общем-template.php post_type_archive_title () На панели скрыть группу метабокс, аналогично настройкам экрана? Создание вкладок на странице параметров администрирования из настраиваемого цикла post post ошибки проверки сайта WordPress Защита паролем или IP для доступа в процессе разработки. Сайт WordPress иначе показал страницу-заполнитель Сделать URL-адрес страницы архива архива должен быть подкаталогом URL-адреса настраиваемого почтового адреса Сохраняется ли прежде, чтобы plugin.php раньше мог использовать get_plugin_data () раньше? Альтернативные функции для mysql_free_result и mysql_ping в функциях wordpress Создать страницу как файл в моей теме?

Добавить пользовательское имя типа сообщения в ссылку term?

Возможно ли добавить имя типа персонализированного сообщения в ссылку термина таксономии и удалить пул таксономии?

По умолчанию используется ссылка: slug_taxonomy / term_name

Мне нравится: post_type_name / term_name

Примечание. Я использую плагин WPML! с плагинами типов для создания пользовательских типов сообщений и таксономий

благодаря

Да, это возможно.

Для начала нужно создать новые rewrite_rules, совместимые с WPML. Эта версия добавляет таксономию к URL-адресу. (Post_type / таксономии / термин)

/** * Custom post type specific rewrite rules * @return wp_rewrite Rewrite rules handled by WordPress */ function cpt_rewrite_rules($wp_rewrite) { $rules = cpt_generate_archives('your_post_type_name', $wp_rewrite); $wp_rewrite->rules = $rules + $wp_rewrite->rules; return $wp_rewrite; } add_action('generate_rewrite_rules', 'cpt_rewrite_rules'); /** * Generate archive rewrite rules for a given custom post type * @param string $cpt slug of the custom post type * @return rules returns a set of rewrite rules for WordPress to handle */ function cpt_generate_archives($cpt, $wp_rewrite) { $rules = array(); $post_type = get_post_type_object($cpt); if ($post_type->has_archive === false) return $rules; $languages = icl_get_languages(); $taxonomies = get_taxonomies(array('_builtin' => false), 'objects'); $permalink_structs = array(); foreach ($taxonomies as $key => $tax) { // get first associated taxonomy if ($tax->object_type[0] == $cpt) { $permalink_structs[] = array( 'rule' => "{$tax->rewrite['slug']}/([^/]+)", 'vars' => array($tax->query_var) ); break; } } // generate for all languages foreach ($languages as $lang) { $slug_archive = WPML_Slug_Translation::get_translated_slug($post_type->rewrite['slug'], $lang['language_code']); foreach ($permalink_structs as $data) { $query = 'index.php?post_type='.$cpt; $rule = $slug_archive.'/'.$data['rule']; $i = 1; foreach ($data['vars'] as $var) { $query.= '&'.$var.'='.$wp_rewrite->preg_index($i); $i++; } $rules[$rule."/?$"] = $query; if ($post_type->rewrite['feeds']) { $rules[$rule."/feed/(feed|rdf|rss|rss2|atom)/?$"] = $query."&feed=".$wp_rewrite->preg_index($i); $rules[$rule."/(feed|rdf|rss|rss2|atom)/?$"] = $query."&feed=".$wp_rewrite->preg_index($i); } if ($post_type->rewrite['pages']) { $rules[$rule."/page/([0-9]{1,})/?$"] = $query."&paged=".$wp_rewrite->preg_index($i); } } } return $rules; } 

Во-вторых, вы должны переписать сгенерированный term_link:

 /** * Rewrite taxonomy term link to custom term link * @param string $url The term URL * @param string $term The term object * @param string $taxonomy The taxonomy slug * @return url returns term link url */ function rewrite_taxonomy_term_permalink($termlink, $term, $taxonomy) { if ('your_taxonomy_name' == $taxonomy) { $post_type = get_post_type_object('your_custom_post_type_name'); $taxonomy_object = get_taxonomy($taxonomy); $slug_archive = WPML_Slug_Translation::get_translated_slug($post_type->rewrite['slug'], ICL_LANGUAGE_CODE); return home_url() . $slug_archive . '/' . $taxonomy_object->rewrite['slug'] . '/' . $term->slug . '/'; } return $termlink; } add_filter( 'term_link', 'rewrite_taxonomy_term_permalink', 10, 3); 

Vuala, он работает как шарм 🙂

Если вы хотите без имени таксономии в URL-адресе. Вы должны абсолютно определить фрагмент URL-адреса с термином slug. В противном случае он будет конфликтовать с перепиской одного типа и получить 404 (post_type / slug для таксономии определяется позже, чем post_type / slug для одного, поэтому имеет более высокий приоритет и будет искать термины таксономии)

Подробнее о реализации здесь: http://someweblog.com/wordpress-custom-taxonomy-with-same-slug-as-custom-post-type/