带有Widget的WordPress插件在一个包中

时间:2013-09-27 21:38:55

标签: php widget wordpress-plugin wordpress

我正在尝试构建一个WordPress插件和小部件,我希望它们在同一个物理包中。 Widget应该保留为典型的WordPress小部件,可以拖放到启用小部件的区域(已经完成并正常工作),插件应该在WordPress管理面板中启用某些子菜单,其中有很少的选项,它应该能够呈现主文档中的某些HTML;让我们说 body 部分。

我也想让两人沟通;至少这样Widget可以从插件中读取某些设置。

我是一名高级PHP程序员,但我对WP插件开发仍然相当新,所以我的主要问题是建议的架构。谷歌没有任何有趣的东西,我不想在这里重新发明轮子。

我的试验和错误让我想到了:

class MyWidget extends WP_Widget {
...
}
add_action('widgets_init', create_function('', 'register_widget("MyWidget");'));

然后:

class MyPlugin {
...
}

主要在 plugin.php 文件中,但我仍然完全失去了启动后者和两者之间的任何形式的公共方法通信。

谢谢!

1 个答案:

答案 0 :(得分:0)

在wordpress插件中使用类时 而不是

add_action('widgets_init', create_function('', 'register_widget("MyWidget");'));

你需要像这样构建它

add_action('widgets_init', array($this, 'callback');

是的,没有变量的方法,INSIDE语录,如果回调是iniside这个类,则使用$ this,但你也可以使用$ my_other_class实例化的$ my_other_class = new My_Other_Class();调用$ my_other_class中的方法...也& $这将起作用(传递参考)

此外,如果你想将变量传递给你的回调,你可以在你的回调方法中添加一个动作,如下所示:

add_action('my_custom_hook'...

然后你的变量就在哪里

do_action('my_custom_hook', $var, $var2)

让它们在你的回调函数中可以访问

希望这至少为你提供了一个关于如何在wp上下文中构建事物的起点...