web-dev-qa-db-fra.com

Les liens permanents ne fonctionnent pas pour la taxonomie personnalisée sur le type d'article personnalisé

J'ai un type de message personnalisé enregistré comme suit:

register_post_type( 'gs_business_listings',
    array(
      'labels' => array(
        'name' => __( 'Local Businesses' ),
        'singular_name' => __( 'Local Businesses' )
      ),
      'public' => true,
            'taxonomies'  => array( 'category', 'gs_business_listing_region' ),
      'has_archive' => true,
            'supports' => array('title', 'editor', 'thumbnail', 'revisions'),
            'register_meta_box_cb' => array($this,'add_meta_boxes'),
            'rewrite' => array('slug'=> apply_filters('goosesoft-coupons-archive-url', 'local-businesses'))
            )
  );

et pour ce type de message personnalisé, j'ai une taxonomie personnalisée qui est enregistrée comme suit:

register_taxonomy(
            'gs_business_listing_region',
            'gs_business_listings',
            array(
                'labels' => array(
                    'name' => 'Regions',
                    'singular_name' => 'Region',
                ),
                'rewrite' => array( 'slug' => 'region', 'hierarchical' => true ),
                'hierarchical' => true,
                'has_archive' => true,
            )
        );

Cela fonctionne du côté administrateur. Tout est comme prévu. Regions apparaît dans le sous-menu Local Businesses. Je peux sauver les régions pour un poste spécifique.

Mais les permaliens ne fonctionnent pas pour les taxonomies. Ce dont j'ai besoin semble assez simple et correspondrait au comportement par défaut auquel je m'attendais. J'ai besoin que l'URL de la taxonomie soit www.example.com/region/a-region, où a-region est l'une des taxonomies. Mais quand je vais à une url comme ça ça ne marche pas. Plus surprenant, c'est que get_term_link() renvoie une URL dans ce format, mais une erreur 404 apparaît sur le lien qui le renvoie.

Que pourrais-je manquer?

1
Joshua Goossen

Il n'y avait rien de mal avec mon code ci-dessus. J'ai trouvé la réponse au bas de la page Taxonomies du Codex :

Si votre site utilise des permaliens personnalisés, vous devrez vider votre structure de permaliens après avoir modifié vos taxonomies. Dans le cas contraire, une erreur "Page introuvable" apparaîtra. Votre structure de permalien est automatiquement vidée lorsque vous visitez Paramètres> Permaliens dans votre tableau de bord WordPress.

Dans mon plugin, flush_rewrite_rules(); était déjà appelé lors de la désactivation, je l'avais désactivé et réactivé plusieurs fois. Le fait que cela n'ait pas fonctionné m'a vraiment fait perdre la tête.

Mais dès que j'ai visité Setting > Permalinks, tout a fonctionné correctement!

1
Joshua Goossen