我想了解一些关于开发提供主题集成的WordPress插件的最佳实践的意见。
为了在我问这个问题的时候有意义,让我从一个假设的例子开始,我很好奇。想象一下,我创建了一个叫做“迪斯科图”的插件。迪斯科唱片注册了三种定制的帖子类型:“乐队”、“专辑”和“曲目”。该插件还提供元框,为每种post类型提供详细信息,以及自定义分类法来组织每种post类型。这些post类型与2个个员额插件绑定在一起。在管理中,用户可以添加新的乐队,这可以与相册相关联,这反过来又与曲目相关联,所有这些都将有许多其他数据添加到他们通过元盒和分类法。
现在,我不想让这个插件简单地设置一个管理员,让用户输入这些信息;我希望它为数据提供一些默认的显示。一个更高级的用户/开发人员可以只使用这个管理。对于她来说,获取这些数据并在主题中使用是非常容易的;但是,如果没有一些默认视图,这个插件对大多数用户来说都是无用的。在本例中,您可以显示任何类似的内容(括号显示了按模板层次结构顺序显示信息的方式):
对于这些post类型有一些默认的表示是很重要的,因为默认的模板文件不会显示每个post类型所需的所有信息。例如,默认情况下,21-11主题只显示专辑的名称、类别、描述和发布日期。对一张专辑不太有用。我想提供一个单一的帖子模板,吸引乐队,发行日期,唱片标签,专辑版本,歌曲等。作为一个插件开发人员,我会觉得这将是重要的提供。我知道模板并不适用于每个主题,但是应该有一些可以与用户主题进一步集成的默认设置。
再说一次,我很好奇什么是处理这种情况的最好方法?我想你可以做以下任何一件事。
短代码可以作为一种非常灵活和用户友好的方式,允许非开发人员添加乐队,专辑,曲目,乐队列表等在网站的任何地方。这将有助于在特定页面上展示乐队,或者为每个乐队创建单独的页面(虽然效率不高,但有些用户以这种方式处理问题)。该短代码将生成HTML,该HTML将绑定到提供的CSS文件,该文件将提供所需数据的良好默认视图。所有内容都包含在插件文件中,不需要对主题做任何事情。
该插件还可以附带模板文件。模板文件可以被标记,并为一个很好的默认视图设置样式。您可以为用户提供将文件移动到主题文件夹的说明,以便在查看post类型时主题将找到正确的模板。您甚至可以提供一个界面,允许用户一次单击就可以移动文件(注意:在激活时,我不会在用户的主题文件夹中创建文件,因为在不启动文件的情况下将文件添加到他们的主题中是有害的)。
您也可以使用过滤器来利用这些文件,而不需要将它们从插件文件夹中移出,从而保持所有的内容都是独立的。我见过用于此目的的"template_include“和"{$type}_template”过滤器。实际上,您可以使用“主题”文件夹中的模板,如果它们不存在,则可以回到这些筛选器上,以提供默认视图。
我想知道其他人认为这些情况下的最佳实践是什么,如果提出的想法在任何方面都是有问题的,以及我没有包括的任何替代方案。
谢谢!
发布于 2011-08-12 01:30:52
我不能回答你问的每一个问题,因为阅读Q需要足够的时间;),但我试着给你一些关于我在开发免费开源插件方面的个人经验的见解。
1.永远不要做太多。功能是每个插件的死亡。首先构建一个基本版本并测试用户的反应。如果您的插件得到了很多关注,您可以集成主要要求的功能。
2.避免填写每一个用例。你需要维护你的插件。WP每三个月提供一次新版本。有时候你所有的插件都很难理解。举个例子: Settings的一个新版本是关于Trac的讨论。当这项工作完成后,很多插件或主题开发人员可能需要修改大量代码,有些人--比如我--甚至在API之上编写了一个抽象层。因此,您需要返回,重写基本/抽象层,然后重新处理调用部分的所有内容。我保证这是很多工作。如果它与您的代码紧密地绑定在一起的话,情况就更糟了。当您开始填充大量用例时,您还需要监视大量WP核心代码的演变,同时您还需要进行大量的工作来更新您的代码。
3.永远不要尝试将大量的代码示例(或模板)绑定到插件或主题中。如果您想以开发人员和最终用户为目标:使用您的博客作为文档。开发人员讨厌这样的东西,最终用户永远不会满意(参见:填充每个用例)。
4.明智地将代码划分为单个文件。经验法则:一个文件为一个部分。例如: styles.php、scripts.php、taxonomies.php、cpts.php等。从“母”(工厂)类加载所有内容,并保持“可插拔”。如果你需要重写东西,你会发现它很容易。如果开发人员在寻找什么:他们会很容易找到的。很多名字很好的文件,不要伤害你。
5.如果您有一个基本样式(类)列表,让用户来决定。这种可能性太大了,来自主题或其他插件的样式会截取你的定义(不管你加了多少细节)。试着用尽可能少的文字来解释。
6.喜欢你的插件。但如果你觉得无聊就放手吧。:)
现在--简而言之--关于你的插件想法的一些细节:
模板文件是不好的。正如我所说:把它记录在你的博客上,在那里提供例子标记和样式。你的博客将获利(如果你有广告的话,你也一样)。
B.短代码很酷。如果插件没有了(在大多数情况下),它们不会对任何人造成伤害,并且可能会在以后扩展/进化到TinyMCE按钮(人们喜欢它)。
明确说明你的插件需要另一个插件。对此提出疑问,如果其他插件不存在(在本例中是链接)或未被激活(您可以在激活时为用户这样做),则向admin_notices添加一个注释(通过register_activation_hook)。还请注意,这个插件来自一个可信任的来源,并将在未来几年中维护。
注:我所写的只是我个人的意见,这反映了我的经验。
发布于 2011-08-12 15:15:08
我看到的第三种技术是将一个特殊的页面指定为插件的占位符,并使用'the_content‘过滤器输出需要输出的任何内容。
通过这种方式,您可以创建与主题结构相结合的模板,因为您不必处理标题、侧边栏、页脚和包装器div。
这方面的一个很好的例子可以在bbPress插件中找到:
发布于 2011-08-12 16:35:59
在某些方面,您必须权衡在创建插件和主题之间的平衡,如果您的场景需要大量的定制/特性,通常最好还是创建一个主题。这样,用户就可以根据外观进行自定义,这总是比让用户定制功能更容易(通过在任何地方阻塞短代码),您有更大的功能控制,它与其他插件一起工作,等等。
一个插件,试图与市场上的所有不同的主题进行大量整合,必然会给你带来很多麻烦,老实说,也会给你带来很多工作。
例如,不再创建一个基于音乐和磁盘管理的非常集成的插件,而是为此创建一个主题,这在需要定制工作的利基市场中变得越来越流行。一个现实世界的例子是一个基于房地产的主题,我不可能为此使用一个插件,因为它有这么深的特性集,相反它是作为一个主题从底层创建的,因为主题可以利用插件的所有功能。
从市场营销的角度来看,当平衡前端功能时,利基主题也可能比插件做得更好。
https://wordpress.stackexchange.com/questions/25697
复制相似问题