使用类通过设置API创建管理页面的最有效方式

时间:2020-01-18 作者:Robert Gillmer

我构建了一个类,它使用设置API创建管理页面。我正在尝试优化它,使其只在需要的地方运行。

我看到的大多数示例和教程都是从主插件文件实例化它。E、 g。,new MyPluginNameClass(); 从…起my-plugin-name.php. 就是这样OptionTreeWPPB 去做吧。

但这样做会在每次页面加载时创建类。我正在开发的插件完全是后端插件。

现在,我可以把我的new MyPluginNameClass() 打电话进来is_admin() 有条件阻止它在前端运行。但我的条件仍然会在每个页面视图上运行,它只是在前端页面上很快退出。

当我不需要的时候,在每个页面上运行代码感觉是不对的。是否有一个我应该将类实例化绑定到的仅管理挂钩?还是我只是想通过优化来节省纳秒,从而过度考虑了这一点?

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

设置API文档中的示例使用admin_initadmin_menu 用于注册自定义设置和管理页面。https://developer.wordpress.org/plugins/settings/custom-settings-page/

还有一个关于通常在前端和后端请求上运行的操作的旧Codex条目,它可以帮助选择合适的操作挂钩。https://codex.wordpress.org/Plugin_API/Action_Reference

我还强烈推荐优秀的老Q&;关于在WP中实例化类。Best way to initiate a class in a WP plugin?

SO网友:Tim Elsass

这实际上取决于您在做什么,但我同意在大多数情况下,使用设置API并仅在回调内部需要时运行代码/实例化类通常是最好的方法,而不是预先实例化所有内容。

除了上面的建议之外,我已经采取过几次的一种方法是挂接WP中提供的一些动态挂钩,例如load-{$page_hook} 要为动态创建的页面运行代码并分别触发任何必要的css/js,请使用admin_print_scripts-{$hook_suffix}/admin_print_styles-{$hook_suffix}(如果需要,也可以使用页脚操作)。admin_head-{$hook_suffix} 使用此方法时也很有用。

哪里$hook_suffix 是,是当前页面的挂钩后缀,因此如果您创建了一个名为“我的插件页面”的设置页面,您可以在load-settings_page_my-plugin-page 钩子,只能在设置页面“我的插件页面”上运行。对于其他页面类型也可以这样做,例如load-toplevel_page_my-plugin-page 如果它们不是设置页/使用设置api。

这个codex 在“页面挂钩后缀”下面有一个这种方法的示例,但我并没有看到任何关于开发人员的内容。wordpress。更为最新的组织。