我正在尝试应用template_include过滤器来从我的插件中扩充模板。 我见过很多人使用以下内容获得成功:
function include_template_files($template_file) {
global $post;
$plugindir = dirname( __FILE__ );
if ('mycustomposttype' == get_post_type()){
$templatefilename = 'mytemplate.php';
$template = $plugindir . '/theme_files/' . $templatefilename;
return $template;
}
return $template_file;
}
add_filter( 'template_include', 'include_template_files' );
get_post_type()返回空,并且我的自定义帖子没有实例化$ post。这适用于WP类型(帖子,页面等)。 我做错了什么?
我正在使用WP 3.7.1,而我正在使用默认的二十三主题。
更新:
我以这种方式注册我的类型:
function register_mycustom_post_type() {
register_post_type( 'mycustomposttype', array(
'labels' => array(
'name' => 'My posts',
'singular_name' => 'My post',
'menu_name' => 'My posts',
'add_new' => 'New custom post',
'add_new_item' => 'Add new custom post',
),
'public' => true,
'show_ui' => true,
'menu_icon' => plugins_url('myicon.png',__FILE__),
'supports' => array( 'title' ,'thumbnail', 'editor' ),
) );
}
add_action('init','register_mycustom_post_type');
第二次更新(部分解决方案):
问题是永久链接重写。如果我使用默认URL(index.php?...),它可以正常工作。
解
为我的帖子类型添加正确的重写选项解决了这个问题:
'rewrite' => array(
'slug' => 'mytype',
'with_front' => false
),
答案 0 :(得分:0)
答案 1 :(得分:0)
我自己回答。问题是永久重写。 将以下内容添加到register_post_type选项解决了问题:
'rewrite' => array(
'slug' => 'mytype',
'with_front' => false
),
答案 2 :(得分:0)
有时这也可以起作用:
get_query_var( 'post_type' );