J'ai le code suivant pour enregistrer un type de message personnalisé et une taxonomie correspondante:
register_post_type( 'gs_business_listings',
array(
'labels' => array(
'name' => __( 'Local Businesses' ),
'singular_name' => __( 'Local Businesses' )
),
'public' => true,
'supports' => array('title', 'editor', 'thumbnail', 'revisions'),
'register_meta_box_cb' => array($this,'add_meta_boxes'),
'rewrite' => array('slug'=> '%larger-region%/%regions%')
)
);
register_taxonomy(
'gs_business_region_harvey',
'gs_business_listings',
array(
'labels' => array(
'name' => 'Harvey County',
'singular_name' => 'Region',
),
'rewrite' => array( 'slug' => 'harvey-county', 'hierarchical' => true ),
'hierarchical' => true,
'has_archive' => true,
)
);
Je pense que l'accès à www.example.com/harvey-county
afficherait une archive de tous les messages utilisant la taxonomie personnalisée. Mais je reçois un 404 non trouvé. Qu'est-ce que j'ai mal? Merci.
Remarque: actuellement, si j'accède à www.example.com/harvey-county/newton
, la page d'archive correspondant au terme newton
s'affiche correctement.
Comme l'a dit Milo, il n'y a pas d'archive de taxonomie générale. Mais il était logique d'en avoir un dans ma situation. Voici ce que j'ai fait pour imiter une archive générale:
J'ai créé une page vierge dans Wordpress Admin nom Harvey County avec un slug harvey-county
. Ensuite, j'ai ajouté un fichier modèle page-harvey-county.php
à mon thème. J'ai copié le code de mon archive.php
. J'ai modifié la portion de boucle pour qu'elle ressemble à ceci:
<?php
$taxonomy_terms = get_terms( 'gs_business_region_harvey', array(
'hide_empty' => 0,
'fields' => 'ids'
) );
$args = array(
'post_type' => 'gs_business_listings',
'tax_query' => array(
array(
'taxonomy' => 'gs_business_region_harvey',
'terms' => $taxonomy_terms
),
),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) : ?>
//header code
<?php
// Start the Loop.
$addressWrapper = array();
$addresses = array();
while ( $query->have_posts() ) : $query->the_post();
//Call get_template_part and such.
endwhile;
endif; ?>
Cela fonctionne, mais me dérange un peu car ce n'est pas très sec, copier archive.php
.