web-dev-qa-db-ja.com

カスタム分類法のアーカイブ用のカスタムテンプレート

activity という名前のカスタム分類法を作成しました。これには local member 、および 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 );

そして、各分類項目を1つのページに作成しました。これらのページはtaxonomy-activities-local.phptaxonomy-activities-member.php、およびtaxonomy-activities-national.phpです。

mydomain.com/activities/local/へのアクセスは問題ありません。しかしmydomain.com/activities/自体にアクセスすると404ページにリダイレクトされます。私はこれが普通はうまくいくはずがないことを十分に理解しています。これはmydomain.com/tag/にアクセスするのと同じです。これは404ページにもリダイレクトします。

私が作ったテンプレートPHPファイルを使用する方法はありますか?したがって、mydomain.com/activities/にアクセスすると、プラグインを使用せずに404ページの代わりにそのPHPファイルが使用されますか。

2
Nicky Logan

そのための最善の方法は、カスタムテンプレートページを作成し、そのテンプレートの用語のリスト(または必要なものは何でも)を取得することです。

template-activity-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(); ?>

そして、そのテンプレートを使用するURL(/ activity)を持つページを作成するだけです。

1
dbeja