web-dev-qa-db-fra.com

La page d'archive de type de publication ne fonctionne pas

J'ai enregistré un type de publication personnalisé à l'aide de l'interface utilisateur du type de publication personnalisée et créé une page d'archivage que j'ai nommée archive-recipe.php. "Recipe" est le nom de mon type de publication personnalisée. Mais cela ne fonctionne pas, mais utilise plutôt le archive.php par défaut. J'ai mis le has-archive à true mais je ne travaille toujours pas. Comment résoudre ce problème?

Voici le code:

register_post_type(
    'recipe', array(
'label' => 'Recipe',
    'description' => 'This is a Recipe Custom Post Type',
    'public' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'capability_type' => 'post',
    'hierarchical' => true,
    'rewrite' => array('slug' => ''),
    'query_var' => true,
    'has_archive' => true,
    'exclude_from_search' => false,
    'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes',),
    'labels' => array (
          'name' => 'Recipe',
          'singular_name' => 'Recipe',
          'menu_name' => 'Recipe',
          'add_new' => 'Add Recipe',
          'add_new_item' => 'Add New Recipe',
          'edit' => 'Edit',
          'edit_item' => 'Edit Recipe',
          'new_item' => 'New Recipe',
          'view' => 'View Recipe',
          'view_item' => 'View Recipe',
          'search_items' => 'Search Recipe',
          'not_found' => 'No Recipe Found',
          'not_found_in_trash' => 'No Recipe Found in Trash',
          'parent' => 'Parent Recipe',
    ),
    )
);
2
markyeoj

Étant donné l'enregistrement standard, vous devriez avoir les éléments suivants:

  • Un type de message avec le nom 'recette'
  • Une archive de recettes recette à example.com/recipe/
  • Articles de recette avec des URL sous la forme example.com/recipe/helloworldrecipe/
  • Un modèle archive-recipe.php
  • Un modèle single-recipe.php

Cependant, je vois ceci dans votre code d'enregistrement:

'rewrite' => array('slug' => ''),

Cela suggère que vous essayez de supprimer le préfixe "recette" des URL de recette. Le résultat de ceci est que votre archive de recette post est maintenant:

site URL + ''

Ce qui est déjà pris par la page d'accueil, de sorte que votre archive post est impossible à obtenir.

En plus de cela, il ne fait pas ce que vous pensez faire. Vous ne pouvez pas modifier un type de publication personnalisé afin de ne pas avoir la partie '/ recipe /' dans ses URL en utilisant uniquement les paramètres de réécriture register_post_type. Vous devez apporter d'autres modifications, qui introduisent également des bugs potentiellement destructeurs de sites.

Par exemple, si vous avez une page appelée "citrouille" et une recette appelée "citrouille", comment WordPress peut-il savoir quelle charge charger lors de la visite à example.com/pumpkin? Ce n'est pas le cas, donc cela ira pour n'importe quelle règle de réécriture trouvée en premier.

Donc, si vous avez une recette pour la tarte, mais qu'il n'y a pas de page appelée tarte, et qu'elle cherche la page et ne la trouve pas, vous n'obtenez pas la recette, vous obtenez un 404.

Je vous conseillerais donc fortement d’abandonner votre tentative. cela rend vos URL moins compréhensibles, et malgré les absurdités du SEO, les "experts" affirment qu'il est plus susceptible de nuire à votre classement dans les moteurs de recherche s'il ne fait rien du tout (il est fort probable que cela ne vous aide absolument pas).

Donc, supprimez le paramètre de réécriture, et enregistrez de nouveau vos permaliens

Mettre à jour

Après avoir posté ce lien:

http://seemynewwebsite.com/g2bm/recipecategory/appetizers/

Il est maintenant clair que vous chargez une taxonomie et attendez une archive de type publication. Une taxonomie n'est pas un type de message, comme vous pouvez le voir ici, ils ne partagent pas les mêmes solutions de rechange:

enter image description here

De plus, cela n’a aucun sens. Par exemple, quel modèle d'archive de type publication serait utilisé dans les scénarios suivants:

  • Taxonomie qui contient 2 types de type de message, personnes et emplacements. Aurait-il recours à archive-location.php ou archive-people.php?
  • Une taxonomie d'utilisateur, se référant aux utilisateurs, pas les messages

Par conséquent, utilisez plutôt un modèle de taxonomie pour votre taxonomie, et non un modèle d'archive de type publication. Dans ce cas taxonomy-recipecategry.php

11
Tom J Nowell