javascript - WordPress 自定义插件发布被拒绝的原因 'Calling core loading files directly'

标签 javascript php wordpress

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

最佳答案

简短:

这应该不是问题。

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

如果这是一个简单的查询,您可能只需使用 $wpdb 的准备语句。但是,如果 dbDelta() 确实更适合您的需求(听起来确实如此),那么将 require_once 一起使用绝对没问题>upgrade.php,尽管它在技术上是一个核心文件。

看看官方Creating Tables with Plugins codex 页面字面上告诉您继续并以这种方式使用它:

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );

推理:

[...] we'll use the dbDelta function in wp-admin/includes/upgrade.php (we'll have to load this file, as it is not loaded by default) [...]

所以,require_once走开我的 friend !

关于javascript - WordPress 自定义插件发布被拒绝的原因 'Calling core loading files directly',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49375130/

相关文章:

javascript - 动态包含 javascript 文件的安全方法

javascript - React 中的 insertRow() 和appendChild() 等效项

javascript - 应用多个过滤器 react

PHP选择具有相同id的不同列

wordpress - Wordpress 中的登录用户列表?

javascript - 使用逗号分割json数据

php - 无法使用 INSERT INTO 向 mysql 表中插入数据

php - Laravel 事件不起作用

php - Codeigniter 从数据库返回 Null 一个不为 null 的字段

php - 从 mysql 数据库检索数据