web-dev-qa-db-fra.com

Modèle personnalisé pour l'archive d'une taxonomie personnalisée

J'ai créé une taxonomie personnalisée nommée activities , contenant des éléments nommés local , membre et national :

<?php
function add_custom_taxonomies() {
    register_taxonomy('Activities', 'post', array(
        'has_archive' => true,
        'hierarchical' => true,
        'labels' => array(
            // labels goes here
        ),
        'rewrite' => array(
            'slug' => 'activities',
            'with_front' => true, 
            'hierarchical' => true
        ),
    ));
}
add_action( 'init', 'add_custom_taxonomies, 0 );

Et j'ai créé pour chaque élément de taxonomie une page, qui sont taxonomy-activities-local.php, taxonomy-activities-member.php et taxonomy-activities-national.php.

Accéder à mydomain.com/activities/local/ est très bien. Mais accéder à mydomain.com/activities/ lui-même redirige vers une page 404. Je comprends parfaitement que cela ne devrait normalement pas fonctionner. C'est comme si vous accédiez à mydomain.com/tag/, qui redirige également vers une page 404.

Est-il possible d’utiliser un fichier template PHP que j’ai créé? Par conséquent, accéder à mydomain.com/activities/ utilise ce fichier PHP au lieu de la page 404 sans utiliser de plug-in?

2
Nicky Logan

Je pense que la meilleure façon de le faire est de créer une page de modèle personnalisée et d’obtenir la liste des termes (ou tout ce dont vous avez besoin) sur ce modèle.

template-activities-taxonomy.php

<?php
/* Template Name: Activities Taxonomy */

get_header(); ?>

<?
$terms = get_terms( 'activities' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ): ?>
    <ul>
    <?php foreach ( $terms as $term ): ?>
        <li><a href="<?php echo esc_url( get_term_link( $term ) ); ?>"><?php echo $term->name; ?></a></li>    
    <?php endforeach; ?>
    </ul>
<?php endif; ?>

<?php get_footer(); ?>

Et ensuite, créez simplement une page avec l'URL souhaitée (/ activités) qui utilise ce modèle.

1
dbeja