我正在尝试创建一个WordPress插件并遇到路障。我正在创建一个需要由子类扩展的设置页面。主要类看起来像这样。
class SettingsPage {
// Properties
// Methods
public function metaboxes() {
add_meta_box( //metabox params );
}
}
此课程将处理主要设置页面。我现在希望能够从几个子类中创建元框。基本上扩展/附加到metaboxes()
方法。
class MetaBoxOne extends SettingsPage {
public function metabox() {
// add another metabox
}
}
这个问题的最佳解决方案是什么?我一直盯着我的代码编辑器几个小时试图找出它没有运气。任何帮助将不胜感激。
继承是最好的途径吗?
答案 0 :(得分:0)
此设计可以使用更多Composition。还定义了IMetaBox
(接口)以确保您的页面类具有功能,这将允许您调整其内容和行为。因此,您的设置页面可能如下所示:
class SettingsPage {
// Fields
ICollection<IMetaBox> _metaBoxes;
// Properties
// Methods
public function metaboxes() {
add_meta_box( //metabox params );
}
}
所有
需要通过子类扩展
将具有管理元变量所需的ICollection<T>
的内置功能,剩下要做的就是调用一个迭代集合的显示方法。
答案 1 :(得分:0)
<强>更新强>
也许这篇文章对您有所帮助: http://code.tutsplus.com/articles/integrating-with-wordpress-ui-meta-boxes-on-custom-pages--wp-26843
首先,如果您想为自己的插件创建设置页面,我建议您使用内置的Settings API。 This tutorial教你如何掌握这个API的概念。
其次,我认为您无法在自定义设置页面上使用元数据,因为'add_meta_boxes'挂钩仅在编辑帖子页面上触发,请参阅codex:
高级操作本节包含与查询相关的操作 WordPress用来确定要显示的帖子,WordPress 循环,激活插件和其他基本级别的WordPress代码。
add_meta_boxes加载“编辑帖子”页面时运行。 (3.0 +)
最后:在其他情况下,如果你有一个主容器,它包含子实体,并且你想收集主容器中的子实体,我认为你应该遵循核心Wordpress模式,回调动作挂钩。在主收集器中,您必须使用以下命令定义自定义操作挂钩:
do_action('your_plugin_main_collector_do_something', $param1, $param2, $param3, ...);
您的子实体应将自己注册到主容器中:
add_action('your_plugin_main_collector_do_something', 'my_entity_callback_function_name', $priority_default_10, $how_many_parameters_you_have_to_use);