サポート » 使い方全般 » カスタム投稿タイプのページが404で表示されない

  • カスタム投稿タイプで作成したページが404で表示されません。

    過去の作成したページは下記と同じfunction.phpを記載し
    single.php、page.phpが置いている同階層にsingle-typea.php、page-typea.phpを作成しポストタイプとは別のデザインで表示されておりました。

    ただ今回は別の人が作成したオリジナルテーマで作成しており、single.php、page.phpともに下記のようにinclude_onceで別フォルダのphpにとばしているので、どこにsingle-typea.php、page-typea.phpを置けばいいのかもわかりません。

    表示されないのはそれが関係していますのでしょうか。

    もしお分かりになる方がおられたら、ご教授いただければと思います。
    よろしくお願いいたします。

    【function.php】
    
    function register_custom_post_types() {
    
    //タイプA
    	register_post_type(
    		'typea',
    		array(
    			'label' => 'タイプA',
    			'hierarchical' => true,
    			'public' => true,
    			'query_var' => false,
    			'rewrite' => true,
    			'menu_position' => 5,
    			'taxonomies' => array('category',),
    			'supports' => array(
    				'title',
    				'thumbnail',
    			)
    		)
    	);
    flush_rewrite_rules( false );
    }
    add_action( 'init', 'register_custom_post_types' );
    
    【single.php】
    
    <?php
    
    include_once(TEMPLATEPATH.'/config.php');
    
    switch ($tlName) {
    	case 'sp' :
    		include_once(TEMPLATEPATH.'/include/sp/sp-header.php');
    		include_once(TEMPLATEPATH.'/include/sp/sp-single.php');
    		include_once(TEMPLATEPATH.'/include/sp/sp-footer.php');
    		break;
    	case 'fp' :
    		header('Content-type: application/xhtml+xml;charset=SJIS-win');
    		ob_start();
    		include_once(TEMPLATEPATH.'/include/fp/sp-header.php');
    		include_once(TEMPLATEPATH.'/include/fp/sp-single.php');
    		include_once(TEMPLATEPATH.'/include/fp/sp-footer.php');
    		$output = ob_get_clean();
    		$output = mb_convert_kana($output, 'ka', 'UTF-8');
    		$output = mb_convert_encoding($output, 'SJIS-win', 'auto');
    		echo $output;
    		break;
    	default :
    		include_once(TEMPLATEPATH.'/include/pc/sp-header.php');
    		include_once(TEMPLATEPATH.'/include/pc/sp-single.php');
    		include_once(TEMPLATEPATH.'/include/pc/sp-sidebar.php');
    		include_once(TEMPLATEPATH.'/include/pc/sp-footer.php');
    }
    
    ?>
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • single.phpが上記のようであったとしても
    テンプレートフォルダのルートにsingle-typea.phpが用意されていれば
    そちらを優先的に読みに行くはずですのでおそらく別の部分に原因があると思います。
    パーマリンク系のプラグインやfunction.php内でパーマリンクをいじっているところとか…

    スレッド開始 nagaib

    (@nagaib)

    jdbbさん、お返事ありがとうございました。

    そうですね。別の部分に原因があると思います。
    jdbbさんからお返事いただいて、single.php、page.phpともにinclude_onceで別フォルダのphpにとばしている構造にはっと気づきました。

    テンプレートフォルダのルートにsingle-typea.phpを置き、その記述をポストタイプとは別のデザインで記載したphpに飛ばせばいいのでした。
    なんかjdbbさんからのお返事で整理できたようで一つ前進しました。
    ありがとうございました。

    ただその飛ばした先、
    include_once(TEMPLATEPATH.’/include/sp/sp-single.php’);
    のsp-single.phpの内容をそのままコピーをしてsp-single-typea.php
    を作成しており、そのページの中で

    <?php include_once(TEMPLATEPATH.’/include/pc/page/sp-‘.$SP_P_PostSlug.’.php’) ?>となっており、
    $SP_P_PostSlug(ポストタイプのスラッグ見にいく指定になっている)
    のがカスタム投稿タイプのページが404で表示されない原因ではないかと思っているのです。

    しかし、この$SP_P_PostSlugが理解できないため、どう変更したらよいのか困っております。

    もしお分かりになる方がおられたら、ご教授いただければと思います。
    よろしくお願いいたします。

    通常通りのテンプレートの作り方であればそのファイルを見ればほぼ$SP_P_PostSlug.php内に
    記述されていますがincludeというのが結構クセモノでして

    スコープの範囲
    は読み込み元をさかのぼって探さなければなりません。
    今の中で分かる範囲は
    テンプレートフォルダ/config.php
    テンプレートフォルダ/functions.php
    テンプレートフォルダ/sp/sp-single.php
    内で
    $SP_P_PostSlug.php =
    で始まっている部分を探すところから・・・という感じです

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタム投稿タイプのページが404で表示されない」には新たに返信することはできません。