サポート » 使い方全般 » 投稿ページごとにテンプレを渡す方法

  • 解決済 mountod

    (@mountod)


    いろいろ紆余曲折した結果、
    こちらのページ

    if ( '3' == $cat->term_id ) {
    include(TEMPLATEPATH . '/news.php');
    } else {
    include(TEMPLATEPATH . '/diary.php');
    }

    が良かろうと思ったのですが、
    Fatal error: Allowed memory size of 94371840 bytes exhausted (tried to allocate 35 bytes) in /@@@@/@@@/@@@/@@@@@/wp-includes/plugin.php on line 302

    と出てしまい、その302行目を見ましたがさっぱりです。

    function do_action($tag, $arg = '') {
    	global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter;
    
    	if ( is_array($wp_actions) )
    		$wp_actions[] = $tag;
    	else
    		$wp_actions = array($tag);
    
    	$wp_current_filter[] = $tag;
    
    	// Do 'all' actions first

    共有レンタルサーバなので、php.iniを書きかえるのはちょっと。。。
    できれば、コアファイルは触らずに適応したいのですが、何かご指南いただけないでしょうか。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック投稿者 mountod

    (@mountod)

    追記

    最初にsingle.phpをコピーしました。それを仮に”single-copy.php”とします。
    そして、single.phpの冒頭に

    if ( '○○' == $cat->term_id ) {
    include(TEMPLATEPATH . '/single-copy.php');
    }else {include(TEMPLATEPATH . '/single.php');
    }

    を書いたところ、上記のFATAL ERRORがでました。
    で、先ほどループしていることに気づき、

    if('○○'==$cat->term_id){
    include(TEMPLATEPATH.'/single-copy.php');
    }

    こうしたところ、今度はrafting.phpに渡っていないように見えますです。
    どこがおかしいのでしょうか。。。

    こんにちは

    Fatal error: Allowed memory size

    が出ているのは、テーマやプラグインなどに、とても負荷のかかるコードがあるのではないかと思います。

    テンプレートをインクルードする事だけでは、そのような事がおきる事はまずないと思いますので、インクルード元のテンプレートに問題があったりするのではないかと思います。

    PHPのinclude関数を使われているようですが、インクルード元が存在しない場合などで、すぐにエラーを発生するので、WordPressのinclude関数を使うといいと思います。


    ( テストしていませんが )

    if ( '○○' == $cat->term_id ) {
     $extend_template = 'copy';
    }else{
     $extend_template = '';
    }
    
    get_template_part( 'single', $extend_template );

    とすることで、single-copy.phpが存在しない場合は、single.phpが適用され、エラーも出ません。

    トピック投稿者 mountod

    (@mountod)

    すみません。

    get_template_part( 'single', $extend_template );
    この部分でシンタックスエラーがでてしまいます。
    どうしてでしょうか。。。

    参考にされたのはカテゴリーページで、今回は投稿ページですよね?
    ということは、

    $cat = get_category( intval( get_query_var('cat') ) );

    でカテゴリーのIDがとれていないのでは・・・?と思っています。
    get_the_categoryなどでカテゴリーIDを取得してからnobitaさんのコードを実行すればうまくいくのではないでしょうか・・・・?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「投稿ページごとにテンプレを渡す方法」には新たに返信することはできません。