从外部源发布到Wordpress插件有效,但Wordpress审核失败

时间:2017-10-31 12:00:50

标签: php wordpress

我一直在构建一个wordpress插件,用于显示网站上的信息。此数据已通过cURL发布到我的插件/ [plugin_name] / inc /目录(update.php)中的页面,并运行更新数据库所需的相关功能。

插头工作正常,但当我提交审查时,我还有两个问题似乎无法解决:

  

1。允许直接文件访问插件文件

     

...通过将此代码放在所有php文件的顶部来避免这种情况:

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

当然我需要直接访问此文件才能将POST数据发送给?或者我还有另一种方法吗?

  

2。直接调用核心加载文件

     

包括wp-config.php,wp-blog-header.php,wp-load.php,或几乎任何其他WordPress核心文件,你必须通过包直接调用不是一个好主意,我们不能批准一个插件,除非有充分的理由加载文件,否则这样做。它很容易失败,因为并非所有的WordPress安装都具有完全相同的文件结构   
  通常插件将包括wp-config.php或wp-load.php以获得对核心WordPress功能的访问,但有更好的方法来执行此操作。如果您将处理功能(需要但无法访问核心功能的功能)绑定到动作挂钩中,例如" init"或" admin_init"。   在同一个文件(update.php)的顶部,我已经包含了这样的内容:

require( dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '\wp-load.php' );

因为我需要访问核心wp函数和类,例如

$wpdb->prepare

而且我不确定我怎么能这样做。我很感激这些问题的任何帮助!

2 个答案:

答案 0 :(得分:2)

至于1.您应该在插件中创建一个处理post数据并运行CURL请求的方法。

至于2.我认为你可以逃脱 A a= this.aService.getAById(AID); b.setA(a); a.getBSet().add(b); this.aService.saveA(a); https://codex.wordpress.org/Class_Reference/wpdb

答案 1 :(得分:0)

如果其他人有这个问题,这就是我所做的:
  1。我添加了此功能并挂钩到我的插件文件:

//GET POST DATA IF APPLICABLE
function wp_getpostdata() {
    if ( isset( $_POST['user'] ) && isset( $_POST['pass'] ) && isset( $_POST['op'] )) {
        require 'inc/update.php';
        exit;
    } // end if
} // end wp_getpostdata
add_action( 'init', 'wp_getpostdata' );`

2. 删除了wp-load include并添加了

global $wpdb;

到我的update.php文件,正如Kyra建议的那样。最后......
3. 将POST目标更改为我的网站地址 像魅力一样 - 希望别人觉得它很有用!