Я зарегистрировал CPT и таксономию со следующим кодом:
// CPT & Taxonomy
add_action('init', 'marques_cpt');
function marques_cpt() {
$labels = array(
'name' => 'Marques',
'singular_name' => 'Marque',
'add_new' => 'Ajouter',
'add_new_item' => 'Ajouter Marque',
'edit_item' => 'Modifier Marque',
'new_item' => 'Nouvelle Marque',
'all_items' => 'Toutes les Marques',
'view_item' => 'Afficher Marque',
'search_items' => 'Rechercher Marques',
'not_found' => 'Pas de marques',
'not_found_in_trash' => 'Pas de marques',
'parent_item_colon' => '',
'menu_name' => 'Marques'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'taxonomies' => array('marquecategory'),
'rewrite' => array('slug' => 'marque/%marquescategory%', 'with_front' => false),
'capability_type' => 'post',
'has_archive' => 'marques',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt'),
);
register_post_type('marque', $args);
$labels = array(
'name' => 'Marques Catégories',
'singular_name' => 'Marques',
'search_items' => 'Rechercher Marques Catégories',
'all_items' => 'Toutes Catégories',
'parent_item' => 'Parent Catégories',
'parent_item_colon' => 'Parent Catégories Marques:',
'edit_item' => 'Modifier Catégories Marques',
'update_item' => 'Mettre à jour Catégories Marques',
'add_new_item' => 'Ajouter Catégories Marques',
'new_item_name' => 'Nouvelle Catégories Marques',
);
$args = array(
'hierarchical' => true,
'rewrite' => array('slug' => 'marque'),
'show_in_nav_menus' => true,
'labels' => $labels
);
register_taxonomy('marquescategory', 'marque', $args);
unset($labels);
unset($args);
}
add_filter('post_type_link', 'marquecategory_permalink_structure', 10, 4);
function marquecategory_permalink_structure($post_link, $post, $leavename, $sample) {
if (false !== strpos($post_link, '%marquescategory%')) {
$projectscategory_type_term = get_the_terms($post->ID, 'marquescategory');
if (!empty($projectscategory_type_term))
$post_link = str_replace('%marquescategory%', array_pop($projectscategory_type_term)->
slug, $post_link);
else
$post_link = str_replace('%marquescategory%', 'non-selectione', $post_link);
}
return $post_link;
}
этот код возвращает URL: domain.come / marque / taxonomy-term / post-slug Мне нужно удалить слаг CPT 'marque 'из ссылки и сохранить термин таксономии: domain.come / taxonomy-term / post-slug Мне удалось это сделать, удалив' marque / 'из rewrite:
'rewrite' => array('slug' => 'marque/%marquescategory%', 'with_front' => false),
он работает отлично, нокогда я это сделал, другие простые посты и страницы возвращали страницу 404 !!