Я ищу несколько дней для ответа, как добавить таксономию в мой постоянный пост. Я нашел эту статью, которая почти точно дает ответ, но она не работает для моего настраиваемого типа сообщений. http://shibashake.com/wordpress-theme/add-custom-taxonomy-tags-to-your-wordpress-permalinksWordpress Добавить тег таксономии в permalink пользовательский тип сообщения
В статье описывается, что сначала сделать простой Таксономия:
add_action('init', 'my_rating_init');
function my_rating_init() {
if (!is_taxonomy('rating')) {
register_taxonomy('rating', 'post',
array( 'hierarchical' => FALSE, 'label' => __('Rating'),
'public' => TRUE, 'show_ui' => TRUE,
'query_var' => 'rating',
'rewrite' => true));
}
}
И тогда вы можете переписать URL в вашей системе Wordpress, как:% рейтинг /% /% postname%
И то вам нужно перевести% рейтинг% до тегов таксономии, выполнив:
add_filter('post_link', 'rating_permalink', 10, 3);
add_filter('post_type_link', 'rating_permalink', 10, 3);
function rating_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%rating%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'rating');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'not-rated';
return str_replace('%rating%', $taxonomy_slug, $permalink);
}
Это прекрасно работает «пост», но когда я изменяю:
register_taxonomy('rating', 'post',
к:
register_taxonomy('rating', 'mycustomposttype',
переписывания URL больше не работает. И только дает следующий URL:
http://www.website.com/custom-post-type/post
Где я хочу это:
http://www.website.com/custom-post-type/taxonomy-tag/post
Так мои 2 вопроса:
- Как я могу сделать эту работу для моего пользовательский тип сообщения?
- Как я могу сделать эту работу только для моего настраиваемого типа сообщений? Потому что мне нужно добавить% rating% к моей системе wordpress (настройки -> permalinks), чтобы она меняла все мои URL.