Wordpress自定义插件版本因“直接调用核心加载文件”而被拒绝

时间:2018-03-20 01:46:41

标签: javascript php wordpress

我为自己开发了一个插件,并在决定公开之后使用它。但是在提交和代码审查之后插件被拒绝,原因是##直接调用核心加载文件。我已经解决了他们提到的所有问题,但现在只有一个困扰我。我在少数几个地方使用require_once( ABSPATH.'/wp-admin/includes/upgrade.php' );来使用dbDelta(),但如果我将删除require_once声明,我将无法使用dbDelta()。您是否认为这将是第二次代码审查的问题?任何已经完成并发布插件的开发人员?

2 个答案:

答案 0 :(得分:3)

简短

这不应该成为一个问题。

更长的答案dbDelta()是一种特殊情况的函数,因为"核心文件" (upgrade.php)定义它并不总是在你的插件需要时加载。

如果它是一个简单的查询,您可能只需使用带有$wpdb的预准备语句。但是,如果dbDelta()确实更符合您的需求(听起来就是这样),那么绝对可以require_onceupgrade.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' );

发布插件php代码