0

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

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

我是一名高级 PHP 程序员,但我对 WP 插件开发还很陌生,所以我的主要问题是关于建议的架构。无法谷歌任何有趣的东西,我只是不想在这里重新发明轮子。

我的试验和错误导致我遇到类似的事情:

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

接着:

class MyPlugin {
...
}

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

谢谢!

4

1 回答 1

0

在 wordpress 插件中使用类而不是

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

你需要像这样构造它

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

是的,没有变量的方法,在引号内,如果回调在此类内部,则使用 $this,但您也可以使用 $my_other_class 实例化的类 $my_other_class = new My_Other_Class(); 在 $my_other_class 中调用方法 ... &$this 也可以工作(传递引用)

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

add_action('my_custom_hook'...

然后无论你的变量在哪里,你都可以

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

使它们在您的回调函数中可访问

希望这至少可以为您提供一个起点,了解如何在 wp 上下文中构建事物......

于 2013-09-27T22:18:59.087 回答