• 解決済 webarton

    (@webarton)


    カスタムタクソノミーをfunctions.phpに作成しているのですが、アーカイブページの表示で404エラーになってしまいます。

    このようなURLになっています。表示用にtaxonomy-publications-cat.phpを用意しています。
    http://localhost:8888/xxxxx/publications-cat/novelized/

    パーマリンクをデフォルトにするとtaxonomy-publications-cat.phpが表示されるのですが、その他にするとエラーになる状態です。

    こちらの投稿と同じだと思ったので、

    http://ja.forums.wordpress.org/topic/5382?replies=5

    'rewrite' => array( 'slug' => 'publications-cat','with_front' => false )
    これを足してみたのですが、うまくいきませんでした。プラグインは全部オフにしていますし、パーマリンクも更新しています。

    functions.phpには以下のように書いています。

    add_action( 'init', 'create_post_type' );
    
    function create_post_type() {
      register_post_type( 'publications', /* post-type */
        array(
          'labels' => array(
            'name' => __( '出版物情報' ),
            'singular_name' => __( '出版物情報' )
          ),
          'public' => true,
    //      'rewrite' => array('slug' => 'voice'),
          'menu_position' =>3, //管理画面で上から3番目
          'supports' => array('title','editor','thumbnail','page-attributes','custom-fields')
        )
      );
    flush_rewrite_rules( false );
    
      register_taxonomy(
        'publications-cat', /* タクソノミーの名前 */
        'publications', /* publications投稿で設定する */
        array(
          'hierarchical' => true, /*  タグ扱いならば false */
          'update_count_callback' => '_update_post_term_count',
          'label' => '出版物のカテゴリー',
          'singular_label' => '出版物のカテゴリー',
          'public' => true,
          'show_ui' => true,
          'rewrite' => array( 'slug' => 'publications-cat','with_front' => false )
        )
      );
    
    }

    どうしたらよいか、どなたか教えていただけないでしょうか。
    よろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • アーカイブページの表示で404エラー

    ここが引っかかるので、もしかしたら見当違いかもしれませんが気付いた点を。

    タクソノミーのテンプレートは、

    taxonomy-{タクソノミー名}-{ターム名}.php

    となるので、taxonomy-publications-cat.php の場合は、publications というタクソノミーの cat というターム にそのテンプレートが適用されます。

    デフォルトの taxonomy.php で条件分岐を加えテンプレートをinclude させることも可能ですが、publications_cat など、名前の変更をされたほうがいいかもしれません。

    タクソノミーの名前を変える場合、データベースの名前も変えないといけないですね。
    ***_term_taxonomy テーブルの taxonomy

    名前を変えずに条件分岐でテンプレートを振り分けるサンプルです(未検証)。

    taxonomy-publications-cat.php を tax-publications-cat.php などにリネーム

    <?php
    // taxonomy.php の先頭
    $terminfo = get_queried_object();
    if ( $terminfo->taxonomy === 'publications-cat' ) {
    	return include(TEMPLATEPATH . '/tax-publications-cat.php');
    }
    ?>
    トピック投稿者 webarton

    (@webarton)

    LVP8さん、ありがとうございます!
    !おっしゃる通りですね!
    タクソノミーの名前にハイフンをつけるのはよくない、と気づきませんでした。

    タクソノミーの名前をハイフンなしに変えて、DBの名前も確認して、
    taxonomy.phpで振り分けました。

    <?php
    // taxonomy.php の先頭
    $terminfo = $wp_query->get_queried_object();
    if ( $terminfo->taxonomy === 'xxxxx' ) {
    	include(TEMPLATEPATH . '/tax-xxxxx.php');
    }
    ?>

    ですが、相変わらずパーマリンクをデフォルトにするとtax-xxxxx.phpの内容が表示されるのに、デフォルト以外にすると404エラーになってしまうのです。
    どうしてできないのかさっぱりわからないのですが、WPではどういうときに404になるか、
    をわかっていないので、そこを調べてみようかと思います。

    昨日昼間投稿して頂いた内容を拝見して、すぐに名前を変えて確認したかったのですが、
    できなかったので遅くなりました。すぐにお答えくださったのに申し訳ないです。
    すみません。

    トピック投稿者 webarton

    (@webarton)

    どうしても解決できなかったので、function.phpに書くのではなく、プラグインCustom Post Type UIを使ったら、エラーになりませんでした。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタムタクソノミーのアーカイブページで404エラー」には新たに返信することはできません。