使用插件处理自定义帖子类型?

时间:2010-11-29 作者:Grant Palin

我看过一些教程,展示了如何创建自定义帖子类型,这个过程似乎很简单。我的问题是,自定义类型信息是主题的一部分,而不是由WP核心处理。因此,如果将主题切换到另一个主题,则它们的自定义类型信息将丢失,并且必须移植到新主题。

我已经看到了一些为您处理自定义类型的插件。在我看来,这与主题是分开的,因此如果插件保持激活状态,它将更具可移植性。当然,主题需要对自定义类型进行模板化和样式化,但它不必维护类型本身。

为此使用插件是否值得?

2 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好@Grant Palin:

The register_post_type() function is really agnostic to theme or plugin; 您可以在\'init\' 无论在哪一个地方,这都取决于你想要完成什么。

例如,如果我正在设置a custom site for a specific client 我可能会just register the post types in the theme. 另一方面,如果我想创造a reusable custom post type (“事件”可能是一个例子)那么我可能register the Event post type in an Event-specific plugin.

但是要注意,除非你的帖子类型与标准帖子相似,否则你可能仍然需要特定的主题支持。以及即将发布的Post Formats 在v3中。1、没有太多好的理由来定义在用例中与标准帖子相似的自定义帖子类型,所以您实际上有六个,六个。

而且I frequently put custom post type registrations 对于新站点in an include file called by the theme\'s functions.php file 除非我到了a fully generic feature 在这种情况下I\'ll move to a plugin (我的大多数客户都让我编写可重用的功能,然后将其出售给他们的客户,我的大部分工作都与自定义帖子类型有关。我很少编写只在单个网站FWIW、JMMV上运行的代码。)

有一件事我要说,I would avoid using plugins that provide a UI 用于创建自定义帖子类型和自定义分类,如Custom Post Type UI 和类似的except 用于:

当你想做一些proof-of-concept prototyping

想什么时候都行to empower an end-user 您不想授予FTP访问权限。

为什么?因为these plugins all store their 自定义帖子类型和分类registrations in the database 这就是very difficult to version control 他们也成功了much harder to launch a new version of the site 来自现有源代码。这些UI插件实际上只有在学习、修补、探索和/或快速而肮脏地进行“假设”验证时才能最好地使用(当然,UI插件在这些用途上是非常棒的。)

此外,注册自定义帖子类型和自定义分类法的代码非常容易学习,WordPress专业人员完全没有理由开发和交付一个系统,该系统不会将其自定义帖子类型和自定义分类法硬编码到PHP代码中,无论是在主题中还是在插件中,由您选择。事实上,我将在下周从一个客户端项目中提取CPT-UI插件,并用硬编码的PHP注册替换它。

希望这有帮助(如果没有,请索取更多。)

SO网友:NetConstructor.com

我的建议是利用EXCELLENT 由Dimas创建的类,称为WP Alchemy。您可以在此处找到它以及示例:http://farinspace.com/wpalchemy-metabox/

**Wordpress的WPAlchemy Metabox类摘要:“WPAlchemy\\U Metabox PHP类可用于快速创建Wordpress元框。它将为开发人员提供所需的灵活性,允许您快速为主题和插件构建自定义元框。

Key Features and Benefits

<易于学习和集成:良好的文档和支持始终很重要(我自己使用代码并保持最新)。集成很简单,只需包含类并使用它即可

Defining a Meta Box is Easy

// include the class in your theme or plugin
include_once \'WPAlchemy/MetaBox.php\';

// include css to help style our custom meta boxes
if (is_admin()) wp_enqueue_style(\'custom_meta_css\',TEMPLATEPATH . \'/custom/meta.css\');

$custom_metabox = new WPAlchemy_MetaBox(array
(
    \'id\' => \'_custom_meta\',
    \'title\' => \'My Custom Meta\',
    \'template\' => TEMPLATEPATH . \'/custom/meta.php\'
));
enter code here
就是这样!上面的代码显示了设置自定义元框所需的基本定义。

How to Use It这个类中的所有函数都非常WordPress友好。如果您熟悉WordPress循环,那么使用此类应该没有问题。

在处理元框模板文件(meta.php)时,您可以使用以下几个变量:

$post; // this is the current post, use $post->ID for the current post ID
$metabox; // this is the meta box helper object
$mb; // same as $metabox, a shortcut instead of writing out $metabox
$meta; // this is the meta data
可在此处找到更多信息:http://farinspace.com/wpalchemy-metabox/

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?