我想就开发提供主题集成的WordPress插件的最佳做法获得一些意见。
为了让我在问这个问题时讲得通,让我从一个我所好奇的场景的假设示例开始。想象一下,我创建了一个名为“ Discography”的插件。唱片目录注册三种自定义帖子类型:“乐队”,“专辑”和“曲目”。该插件还提供了元框,该框提供了每种帖子类型的详细信息,以及用于组织每种帖子类型的自定义分类法。这些帖子类型与Posts 2 Posts插件捆绑在一起。在管理员中,用户可以添加新的乐队,这些乐队可以与专辑相关联,而专辑又与曲目相关联,所有这些乐队都将通过元框和分类法向其中添加许多其他数据。
现在,我不希望这个插件为用户输入信息而简单地设置管理员。我希望它为数据提供一些默认显示。仅具有该管理员的高级用户/开发人员就可以了。对于她来说,获取这些数据并将其用于主题将很容易;但是,如果没有一些默认视图,此插件对于大多数用户将是无用的。对于此示例,您可以显示类似的内容(括号显示按模板层次结构顺序显示信息的方式):
- 频段(单前缀-band.php,single.php,index.php,简码)
- 专辑(single-prefix-album.php,single.php,index.php,shortcode)
- 曲目(单前缀-track.php,single.php,index.php,简码)
- 乐队列表(template-band-list.php,page-band-listing.php,page- {id} .php,page.php,index.php,简码)
- 专辑列表(template-album-list.php,page-album-listing.php,page- {id} .php,page.php,index.php,shortcode)
- 相册时间轴(template-album-timeline.php,page-album-timeline.php,page- {id} .php,page.php,index.php,shortcode)
重要的是,这些帖子类型必须有一些默认的表示形式,因为默认模板文件不会显示每种帖子类型所需的所有信息。例如,默认情况下,“二十一”主题将仅显示专辑的名称,类别,描述和发布日期。对于专辑来说不是很有用。我想提供一个单独的帖子模板,其中包含乐队,发行日期,唱片标签,专辑版本,曲目等。作为插件开发人员,我觉得提供这一点很重要。我知道该模板不会针对每个主题都适用,但是应该有一些默认设置可以与用户主题进一步集成。
再次,我很好奇如何处理这种情况?我认为您可以执行以下任何操作。
简码
简码可以用作一种非常灵活且用户友好的方式,以允许非开发人员在站点中的任何位置添加乐队,专辑,曲目,乐队列表等。这对于在特定页面上显示乐队或为每个乐队创建单独的页面很有帮助(效率不高,但是某些用户以这种方式处理事情)。短代码将生成HTML,该HTML将与提供的CSS文件绑定,该CSS文件将提供所需数据的漂亮默认视图。一切都将包含在插件文件中,并且主题不需要执行任何操作。
模板文件
该插件还可以附带模板文件。可以对模板文件进行标记和样式设置,以获得漂亮的默认视图。您可以为用户提供指示,以将文件移动到主题文件夹,以便在查看帖子类型时主题将找到正确的模板。您甚至可以提供一个界面,允许用户单击移动文件(注意:激活时我不会在用户的主题文件夹中创建文件,因为将文件添加到主题中而不启动它们是邪恶的) 。
您还可以使用过滤器来利用这些文件,而无需将其移出plugin文件夹,从而使所有内容保持独立。我已经看到了用于此目的的“ template_include”和“ {$ type} _template”过滤器。实际上,您可以使用主题文件夹中的模板,如果模板不存在,则可以依靠这些过滤器提供默认视图。
问题
我想知道别人认为这些情况下的最佳做法是什么,如果所提出的想法在任何方面都存在问题,并且我没有列出任何替代方案。
谢谢!