我为自己开发了一个插件,并在决定公开之后使用它。但是在提交和代码审查之后插件被拒绝,原因是##直接调用核心加载文件。我已经解决了他们提到的所有问题,但现在只有一个困扰我。我在少数几个地方使用require_once( ABSPATH.'/wp-admin/includes/upgrade.php' );
来使用dbDelta(),但如果我将删除require_once
声明,我将无法使用dbDelta()。您是否认为这将是第二次代码审查的问题?任何已经完成并发布插件的开发人员?
答案 0 :(得分:3)
简短:
这不应该成为一个问题。
更长的答案:dbDelta()
是一种特殊情况的函数,因为"核心文件" (upgrade.php)定义它并不总是在你的插件需要时加载。
如果它是一个简单的查询,您可能只需使用带有$wpdb
的预准备语句。但是,如果dbDelta()
确实更符合您的需求(听起来就是这样),那么绝对可以将require_once
与upgrade.php
一起使用,尽管它在技术上是一个核心文件。
查看官方Creating Tables with Plugins个法典网页,它真实地告诉您继续以这种方式使用它:
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
有了推理:
[...]我们将在wp-admin / includes / upgrade.php中使用dbDelta函数(我们必须加载此文件,因为它默认不加载)[.. ]
所以,require_once
离开了我的朋友!
答案 1 :(得分:0)
好的,好消息!
插件获得批准且已公开:)
感谢大家的推荐!
您可以使用require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );