如何将数据发布到wordpress插件?

时间:2011-08-22 07:23:11

标签: php wordpress wordpress-plugin

我想创建一个wordpress插件,可以从外部捕获对某个URL的POST / GET请求,这样我就可以将外部PHP代码发送到wordpress插件,然后该插件可以在内部进一步处理。

我不想从外部创建博客文章或页面,我知道XML-RPC接口存在。我正在谈论将数据从外部发布到wordpress,然后在插件中进一步处理。

我想我也可以直接连接到WP DB,但这可能不是一个非常干净的解决方案,如果我升级WP可能会破坏。

2 个答案:

答案 0 :(得分:3)

正如您已经了解的WordPress XMRPC:您的插件可以为XMLRPC注册自己的函数,然后收听请求。您可以向XMLRPC端点发送POST请求,然后将触发插件功能。

以下代码示例是一个简单的插件类,它将函数注册到XMLRPC端点my.recieve。它显示了回调函数如何注册到该字符串:

/**
 * XML RPC Plugin
 */
return RecievePostPlugin::bootstrap();

class RecievePostPlugin
{
    private static $instance;
    public static function bootstrap()
    {
        if (null === $this->instance)
             $this->instance = new __CLASS__;
        return $this->instance; 
    }
    public function __construct()
    {
        add_filter('xmlrpc_methods', array($this, 'addXMLRPCActions'));
    }
    public function addXMLRPCActions(array $methods)
    {
        $methods['my.recieve'] = array($this, 'recieveXMLRPCAction');
        return $methods;
    }
    public function recieveXMLRPCAction(array $arguments)
    {
       // your code here, POST can be accessed via $_POST
    }
}

如果你不喜欢XMLRPC开销,你可以创建一个插件的PHP文件并请求它。然后你需要自己加载你可能想要使用的所有WP函数(例如数据库访问等)。

答案 1 :(得分:0)

您可以创建重写规则,将一些奇特的漂亮URL重定向到插件目录中的文件。该文件将包含$ _POST数据。来自描述WP_Rewrite的Wordpress page

function feed_dir_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        'index.rdf' => 'index.php?feed=rdf',
        'index.xml' => 'index.php?feed=rss2',
        '(.+).xml' => 'index.php?feed=' . $wp_rewrite->preg_index(1)
    );

    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}

// Hook in.
add_filter( 'generate_rewrite_rules', 'feed_dir_rewrite' );