首页 文章

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

提问于
浏览
0

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

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

我是一名高级PHP程序员,但我仍然是WP插件开发的新手,所以我的主要问题是建议的架构 . 谷歌不能有什么有趣的东西,我只是不想在这里重新发明轮子 .

我的试验和错误导致我:

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

然后:

class MyPlugin {
...
}

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

谢谢!

1 回答

  • 0

    在wordpress插件中使用类而不是

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

    你需要像这样构建它

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

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

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

    add_action('my_custom_hook'...
    

    然后你的变量就在哪里

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

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

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

相关问题