我在插件中包含了wp-load.php文件。它在本地WordPress环境中运行良好。当我提交插件供审查时,他们要求调用核心文件作为一个函数。下面是他们用邮件发送的信息。
直接调用核心加载文件 包括wp-config.php、er.php、wp-load.php或几乎任何其他必须通过包含直接调用的WordPress核心文件都是不允许的。 这些调用容易失败,因为并非所有WordPress安装都具有完全相同的文件结构。此外,它还为您的插件打开了安全问题,因为WordPress可以很容易地以未经身份验证的方式运行代码。 您的代码应该始终存在于函数中,并由操作钩子调用。即使需要代码存在于WordPress之外,这也是正确的。只有登录和授权的人才能访问代码,如果它需要这种访问的话。您的插件页面应该通过仪表板调用,就像所有其他设置面板一样,这样,它们总是可以访问WordPress函数。 如果需要外部服务直接访问“页面”,则应该使用query_vars和/或重写规则来创建一个调用函数的虚拟页面。
我认为下面的代码可能是问题所在。
require_once('../../../wp-load.php');
$apikey = sanitize_text_field( $_POST['apikey'] );
$appid = sanitize_text_field( $_POST['appid'] );
$ulr = esc_url_raw( $_POST['ulr'] );
global $wpdb;
$wpdb->update(
'wp_table',
array(
'apikey' => $apikey, // string
'appid' => $appid,
'ulr' => $ulr
),
array( 'id' => '1' ),
array(
'%s', // value1
'%s',
'%s'
),
array( '%d' )
);为什么需要将wp-load.php作为函数加载,而不是作为我使用过的方法加载?我现在需要做什么改变才能获得批准?
发布于 2018-07-09 14:50:58
一旦您注册插件并激活它,它就可以使用所有WP核心功能,因此不需要加载wp-load.php。
加载此文件通常用于您想要一个独立的文件,您可以直接调用/访问它的URL (而不是作为插件)。
https://stackoverflow.com/questions/51248142
复制相似问题