私はregister_post_typeを使ってカスタムの投稿タイプ( 'events')を追加するプラグインを書いています。さらに、通常のsingle.phpの代わりにsingle-event.phpを使いたいと思います。プラグインフォルダの現在の構造は次のとおりです。
私はそれを私のテーマディレクトリの中に置いておけばそれが可能であることを知っています、しかし私はそれをプラグインの中に置いてそれを利用したいです。どうすればいいのですか?そのためのカスタム関数はありますか?
function get_custom_post_type_template($single_template) {
global $post;
if ($post->post_type == 'events') {
$single_template = dirname( __FILE__ ) . '/single-event.php';
}
return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );
またはあなたが使用することができます:
add_filter( 'template_include', 'single_event_template', 99 );
function single_event_template( $template ) {
if ( is_singular('event') ) {
$new_template = locate_template( array( 'single-event.php' ) );
if ( '' != $new_template ) {
return $new_template ;
}
}
return $template;
}
または locate_template
を使うこともできます
これは私がいつもやっていることです。あなたが$ wp_queryと$ postの両方を必要としているかどうかわからないが、それはいつも私のために働いた。
これをplugin-main-file.php
に入れるだけです。
/**
* Add single template for events post type plugin
*/
function custom_template_events_post_type_plugin($single) {
global $wp_query, $post;
if ($post->post_type == "events"){
$template = dirname( __FILE__ ) . '/single-event.php';
if(file_exists( $template ))
return $template;
}
return $single;
}
add_filter('single_template', 'custom_template_events_post_type_plugin');