2011-09-19 15 views
-1

カスタムポストテンプレートプラグインが大好きなので、私は自分のテーマにそれを作りたいと思っています。WordPressの投稿にカスタム機能を追加しますか?

この機能はcan be found hereですが、ページでのみ機能します。どのようにこれを投稿用にも使用できるようにするにはどうすればよいですか?

add_filter('single_template', create_function('$t', 'foreach((array) get_the_category() as $cat) { if (file_exists(TEMPLATEPATH . "/single-{$cat->term_id}.php")) return TEMPLATEPATH . "/single-{$cat->term_id}.php"; } return $t;')); 

答えて

0

あなたがリンクしたウェブサイトによると、これは投稿とページで有効です。また、WordPressの文書(http://codex.wordpress.org/Plugin_API/Filter_Reference/_single_template)によると、 'single_template'フィルタは投稿とページの両方に使用されます。

名前に正しいカテゴリIDを持つ別のsingle.phpファイルがありますか。例えばsingle-2.php

正しい名前のsingle.phpファイルが見つからない場合は、標準のsingle.phpファイルに戻ります。あなたはこれを見ていますか?

EDIT:

あなたはWordpressの管理領域に、実際には、このオプションを望んでいた場合、私はあなたが使用したいsingle.phpファイルの値を格納するポストメタを使用してお勧めします。

あなたは、あなたが利用可能なすべてのsingle.phpテンプレートファイルを得るためにあなたの元の質問からあなたのコードの一部を使用し、ドロップダウンリストにそれらをドロップすることができ、管理者ページhttp://codex.wordpress.org/Function_Reference/add_meta_boxにカスタムメタボックスを追加することができます。

$templates = array(); 
foreach((array) get_the_category() as $cat) { 
    if (file_exists(TEMPLATEPATH . "/single-{$cat->term_id}.php")) 
     $templates[] = TEMPLATEPATH . "/single-{$cat->term_id}.php"; 
} 

次に、あなたの元に同様のフィルタを追加する必要があります。

function custom_single_template($t){ 
    global $post; 

    if(get_post_meta($post->ID, 'name_of_key', true)) { 

     return TEMPLATEPATH . get_post_meta($post->ID, 'name_of_key', true); 

    } 

    return $t; 

} 
add_filter('single_template', 'custom_single_template'); 
+0

私は作品の上方に設けられたコードを。問題は、私がポストを編集/作成するときに使用するテンプレートを尋ねるドロップダウンボックスが必要なことです。この機能を持つページを作成するときと同じです。プラグインにはこの機能がありますが、機能には含まれていません。 – siouxfan45

+0

ああ、それはあなたがもともと頼んだものではありません。ページテンプレートを選択する機能は、デフォルトのWordpress機能です。私はあなたが投稿のためにそれを行うことができる方法で私の答えを更新しました。 –

+0

申し訳ありませんが、私はこれでそれを把握することはできません。試してくれてありがとう。 – siouxfan45

関連する問題