プラグインディレクトリのファイルに戻る前に、テーマフォルダの適切なテンプレートを確認したいです。これが私のコードです。
add_filter( 'template_include'、 'sermon_template_include'); 関数sermon_template_include($ template){ if(get_query_var( 'post_type')== 'wpfc_sermon'){ if( is_archive()|| is_search()): if(file_exists(TEMPLATEDIR。 '/archive-wpfc_sermon.php')) の場合、TEMPLATEDIRが返されます。 '/archive-wpfc_sermon.php'; はdirname(__ FILE__)を返します。 '/views/archive-wpfc_sermon.php'; else: if(file_exists(TEMPLATEDIR。' /single-wpfc_sermon.php')) TEMPLATEDIRを返します。 '/single-wpfc_sermon.php'; はdirname(__ FILE__)を返します。 '/views/single-wpfc_sermon.php'; endif; } return $ template; }
問題は、うまくいかないことです。 :-)それはいつも私のプラグインフォルダ内のファイルを選びます。何をすればいいの?たくさんのバリエーションを試してみましたが、うまくいくことがないようです。前もって感謝します!ジャック
_編集_
私はarchive-wpfc_sermon.phpが存在すればテーマフォルダから返されることを期待しています。しかし、私のプラグインからのファイルは常に返されます。ご協力いただきありがとうございます!これはリポジトリにある私のSermon Managerプラグインからのものです。
だから、私は正確に何が問題を引き起こしているのかわからないが、あなたは以下を試みるかもしれない:
dirname(__FILE__)
を plugin_dir_path( __FILE__ )
に置き換えますTEMPLATEDIR
を get_stylesheet_directory()
に置き換えます問題が定数を直接参照することからくるのは、possibleです。
これがあなたのために働くかどうか私にはわかりませんが、それは一撃の価値があります。特別なテンプレートが必要な場合は、カスタム投稿タイプにこれを常に使用します。
// Template selection Defines the template for the custom post types.
function my_template_redirect()
{
global $wp;
global $wp_query;
if ($wp->query_vars["post_type"] == "your_custom_post_type")
{
// Let's look for the your_custom_post_type_template.php template
// file in the current theme
if (have_posts())
{
include(TEMPLATEPATH . '/your_custom_post_type_template.php');
die();
}
else
{
$wp_query->is_404 = true;
}
}
}
このスクリプトをfunctions.phpファイルに追加し、テンプレートファイルをあなたのテーマディレクトリに追加するだけです。
これは一撃の価値があるかもしれず、あなたのプラグインとの衝突を引き起こさないかもしれません。しかし、私はそれについて確信がありません。
忘れました...アクションを追加するのを忘れないでください。 :)
add_action("template_redirect", 'my_template_redirect');