插件single.php没有显示

时间:2017-05-15 11:02:20

标签: wordpress templates

我正在为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应该放在插件映射中的特定文件夹中吗?

编辑:我已经再次保存了固定链接结构,但这没有帮助。

2 个答案:

答案 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