Avoir la situation suivante ici:
Type de message personnalisé: 'recettes'
Taxonomie pour les recettes personnalisées de type publication: 'receitas'
Une des taxonomies slug: 'receitas-whoopie-pie'
La structure de lien permanent DOIT être:
example.com/receitas (affiche toutes les publications de type 'recettes' personnalisées, il peut s'agir d'un modèle de page si nécessaire)
example.com/receitas-whoopie-pie (affichez tous les posts de type 'recettes' personnalisés sous la taxonomie 'recipescat' -> 'receitas-whoopie-pie')
example.com/receitas-whoopie-pie/post_name (affichez un message singulier sous la taxonomie 'receitas' -> 'receitas-whoopie-pie')
J'ai essayé de nombreuses manières de le faire par le biais de filtres, le seul qui fonctionne, donnez-moi une page 404 lorsque vous accédez à .../receitas-whoopie-pie/post_name.
En fait, j'ai la structure suivante:
Mes fonctions indépendamment de ce problème:
example.com/receitas (affiche toutes les publications de type de recettes 'recettes' personnalisées - modèle de page)
Exemple.
example.com/recipes/post_name (affiche un message unique sous la taxonomie 'receitas' -> 'receitas-whoopie-pie')
add_action( 'init', 'receitas_posttype', 0 );
function receitas_posttype() {
$labels = array(
'menu_name' => 'Receitas',
'name' => 'Receitas',
'singular_name' => 'Receita',
'parent_item_colon' => '',
'all_items' => 'Todas as Receitas',
'view_item' => 'Ver Receita',
'add_new_item' => 'Adicionar Receita',
'add_new' => 'Nova Receita',
'edit_item' => 'Editar Receita',
'update_item' => 'Atualizar Receita',
'search_items' => 'Pesquisar Receita',
'not_found' => 'Receita(s) não encontrada(s)',
'not_found_in_trash' => 'Receita(s) não encontrada(s) no lixo'
);
$args = array(
'label' => 'recipes',
'description' => 'Receitas',
'labels' => $labels,
'supports' => array( 'title', 'editor', 'author', 'thumbnail' ),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 100,
'menu_icon' => get_bloginfo('stylesheet_directory').'/images/receitas.png',
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
);
register_post_type( 'recipes', $args );
}
add_action( 'init', 'receitascat', 0 );
function receitascat() {
$labels = array(
'name' => _x( 'Receitas', 'Taxonomy General Name', 'ickfd' ),
'singular_name' => _x( 'Receita', 'Taxonomy Singular Name', 'ickfd' ),
'menu_name' => __( 'Categorias de Receita', 'ickfd' ),
'all_items' => __( 'Todas as categorias', 'ickfd' ),
'parent_item' => __( 'Categoria pai', 'ickfd' ),
'parent_item_colon' => __( 'Categoria pai:', 'ickfd' ),
'new_item_name' => __( 'Nova categoria', 'ickfd' ),
'add_new_item' => __( 'Adicionar nova categoria', 'ickfd' ),
'edit_item' => __( 'Editar categoria', 'ickfd' ),
'update_item' => __( 'Atualizar categoria', 'ickfd' ),
'separate_items_with_commas' => __( 'Separe as categorias com vírgula', 'ickfd' ),
'search_items' => __( 'Pesquisar categorias', 'ickfd' ),
'add_or_remove_items' => __( 'Adicionar ou remover categorias', 'ickfd' ),
'choose_from_most_used' => __( 'Escolha as categorias mais usadas', 'ickfd' ),
);
$rewrite = array(
'slug' => 'receitas',
'with_front' => true,
'hierarchical' => true,
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => false,
'rewrite' => $rewrite,
);
register_taxonomy( 'receitas', 'recipes', $args );
}
Les fonctions qui ont fonctionné, mais avec 404 pages au singulier:
add_action( 'init', 'receitas_posttype', 0 );
function receitas_posttype() {
$labels = array(
'menu_name' => 'Receitas',
'name' => 'Receitas',
'singular_name' => 'Receita',
'parent_item_colon' => '',
'all_items' => 'Todas as Receitas',
'view_item' => 'Ver Receita',
'add_new_item' => 'Adicionar Receita',
'add_new' => 'Nova Receita',
'edit_item' => 'Editar Receita',
'update_item' => 'Atualizar Receita',
'search_items' => 'Pesquisar Receita',
'not_found' => 'Receita(s) não encontrada(s)',
'not_found_in_trash' => 'Receita(s) não encontrada(s) no lixo'
);
$args = array(
'label' => 'recipes',
'description' => 'Receitas',
'labels' => $labels,
'supports' => array( 'title', 'editor', 'author', 'thumbnail' ),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 100,
'menu_icon' => get_bloginfo('stylesheet_directory').'/images/receitas.png',
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'rewrite' => true,
'capability_type' => 'post',
);
register_post_type( 'recipes', $args );
}
// Ativação das categorias (taxonomias) do custom post type
add_action( 'init', 'receitascat', 0 );
function receitascat() {
$labels = array(
'name' => _x( 'Receitas', 'Taxonomy General Name', 'ickfd' ),
'singular_name' => _x( 'Receita', 'Taxonomy Singular Name', 'ickfd' ),
'menu_name' => __( 'Categorias de Receita', 'ickfd' ),
'all_items' => __( 'Todas as categorias', 'ickfd' ),
'parent_item' => __( 'Categoria pai', 'ickfd' ),
'parent_item_colon' => __( 'Categoria pai:', 'ickfd' ),
'new_item_name' => __( 'Nova categoria', 'ickfd' ),
'add_new_item' => __( 'Adicionar nova categoria', 'ickfd' ),
'edit_item' => __( 'Editar categoria', 'ickfd' ),
'update_item' => __( 'Atualizar categoria', 'ickfd' ),
'separate_items_with_commas' => __( 'Separe as categorias com vírgula', 'ickfd' ),
'search_items' => __( 'Pesquisar categorias', 'ickfd' ),
'add_or_remove_items' => __( 'Adicionar ou remover categorias', 'ickfd' ),
'choose_from_most_used' => __( 'Escolha as categorias mais usadas', 'ickfd' ),
);
$rewrite = array(
'slug' => '',
'with_front' => false,
'hierarchical' => true,
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => false,
'rewrite' => $rewrite,
);
register_taxonomy( 'receitas', 'recipes', $args );
}
function filter_post_type_link($link, $post)
{
if ($post->post_type != 'recipes')
return $link;
if ($cats = get_the_terms($post->ID, 'receitas'))
$link = str_replace('recipes', array_pop($cats)->slug, $link);
return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);
Merci d'avance. Désolé pour mon mauvais anglais. :(
Você já usou Permaliens de type de message personnalisé ?
Avez-vous déjà utilisé un type de message personnalisé permalien ?
Exemple: example.org/post_type/taxonomy_term_slug