我想创建一个wordpress插件,可以从外部捕获对某个URL的POST / GET请求,这样我就可以将外部PHP代码发送到wordpress插件,然后该插件可以在内部进一步处理。
我不想从外部创建博客文章或页面,我知道XML-RPC接口存在。我正在谈论将数据从外部发布到wordpress,然后在插件中进一步处理。
我想我也可以直接连接到WP DB,但这可能不是一个非常干净的解决方案,如果我升级WP可能会破坏。
答案 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' );