Wordpress Custom Post + Taxonomy, как сделать человечий, нормальный урл
У нас есть
register_post_type('production')
с урлом
/production/production-1
и
register_taxonomy(production_category') с урлом
/production_category/pogruzchiki/
По нормальному это должно выглядеть
/production/pogruzchiki/production-1
Что бы этого добиться использую
'rewrite' => array( 'slug' => 'production/%production_category%', 'with_front' => false ),
с последующим
post_type_link / str_replace( '%production_category%', $terms[0]->slug, $post_link);
Получает нормальный урл
/production/pogruzchiki/production-1
Но с таким походом отваливается пагинация.
Еще нашел вариант
function generate_taxonomy_rewrite_rules( $wp_rewrite ) {
$rules = array();
$post_types = get_post_types( array( 'name' => 'production', 'public' => true, '_builtin' => false ), 'objects' );
$taxonomies = get_taxonomies( array( 'name' => 'production_category', 'public' => true, '_builtin' => false ), 'objects' );
foreach ( $post_types as $post_type ) {
$post_type_name = $post_type->name; // 'developer'
$post_type_slug = $post_type->rewrite['slug']; // 'developers'
foreach ( $taxonomies as $taxonomy ) {
if ( $taxonomy->object_type[0] == $post_type_name ) {
$terms = get_categories( array( 'type' => $post_type_name, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0 ) );
foreach ( $terms as $term ) {
$rules[$post_type_slug . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
$rules[$post_type_slug . '/' . $term->slug . '/page/?([0-9]{1,})/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug . '&paged=' . $wp_rewrite->preg_index( 1 );
}
}
}
}
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'generate_taxonomy_rewrite_rules',10,3);
Все работает и урл теперь
/production/asfaltobetonnye-zavody/ и /production/production-1
При попытки добавить term в урл через
add_filter( 'post_type_link')
$post_link = '/'.$post_type_slug.'/'.$term_slugs[0].'/'.$post->post_name;
return $post_link;
урл получается как надо
/production/pogruzchiki/production-1, но получаю 404
Комрады, хелп. Как, как сделать нормально !?