我正在为Wordpress创建一个插件,为新闻和事件创建一个新的帖子类型(是的,还有另一个;-))。 post-type以名称gg_nae注册。
帖子类型按预期工作;邮政类型可以保存和编辑。
现在我想创建一个自定义模板文件。我称它为单gg_nae.php,我将其保存在与插件代码相同的文件夹中。 如果我正确理解https://developer.wordpress.org/plugins/post-types/working-with-custom-post-types/上的解释应该足以在自定义模板中呈现帖子类型,但它不会。它使用模板中的single.php文件呈现帖子。
但是,如果我将自定义模板移动到主题文件夹,Wordpress会按预期使用模板;它在单gg_nae.php模板中呈现帖子。
我在这里做错了什么?单gg_nae.php应该放在插件映射中的特定文件夹中吗?
编辑:我已经再次保存了固定链接结构,但这没有帮助。
答案 0 :(得分:0)
仅针对以下三个参数中的缺失参数u正在收到错误
'rewrite' => array( 'slug' => 'slider' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => true,
在参数列表中尝试使用其余参数
答案 1 :(得分:0)
在接近这个问题时,我认为错了。
我之前创建了自定义帖子类型,并且总是将它们包含在我的Wordpress主题的functions.php中,因此创建模板(archive-PostTypeName.php和single-PostTypeName.php)来显示它们。我认为在开发CPT插件时也需要这样做。
但是,如果是插件,则必须使用过滤器在插件中更改single.php模板的行为。我已将以下(简化)代码添加到我的插件中:
/**
* Alter the_content if Posttype is custom post type
*
* @uses is_single()
*/
add_filter( 'the_content', 'my_the_content_filter', 20 );
function my_the_content_filter( $content ) {
if ( is_single() AND get_post_type() === 'PostTypeName') {
// Do stuff here
$content = 'This is My Custom Post Type!';
}
// Returns the content.
return $content;
}
当打开“PostTypeName”类型的帖子时,内容会显示“这是我的自定义帖子类型!”,否则它将显示页面帖子的内容。
有关过滤器(和操作)的详细信息可以是in the Wordpress Codex