通过插件从外部网站请求Wordpress流程表单

时间:2014-05-15 20:51:48

标签: php wordpress forms

我想创建一个类似于

的端点
http://localhost/wordpress/xxxx/ 

每当被调用时都在处理POST请求。 所以我的情况看起来像:

网站A网络表单 - >用户提交数据 - > Wordpress(http://localhost/wordpress/xxxx/) - >我正在解析和处理请求

如何在不直接调用插件文件的情况下实现它? 似乎检测'xxxx'是否被用作url的一部分的最简单方法是使用parse_request:

add_action('parse_request', 'xxxx_parse_request');
function xxxx_parse_request($wp) {

    if (array_key_exists('xxxx', $wp->query_vars)) {
                        $location =  plugin_dir_url(__FILE__).'includes/issuer_json.php';
                // process the request.
         wp_redirect($location);
    }
}

但它只适用于像wordpress?xxxx = 1这样的请求,但不适用于wordpress / xxxx。我认为这对我有用,我创建了一个测试表来检查它。请注意,我将表单的操作指定为 http://localhost/wordpress/?xxxx=1 ,并指定了一个隐藏的输入来测试传递数据。

<form action="http://wordpress/?xxxx=1"> 
<input type="hidden" name="test" value="tes1"/>

<input type="submit" />
</form>

每当我提交表单时,我都会被重定向到包含以下网址的页面:http://wordpress/?test=tes1,因此表单覆盖了默认操作 http://wordpress/?xxxx=1

我不知道如何处理这个问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在我看来,你需要使用WP admin-ajax处理程序。

基本上在你的插件中你创建了类似的东西:

add_action( 'wp_ajax_my_plugin_function', 'my_plugin_function' );

function my_plugin_function() {
    // Handle request then generate response using WP_Ajax_Response
    echo "You reached my plugin function";
    // important!
    exit();
}

然后在您的ajax或表单操作中,使用POST参数(或隐藏的输入)POST到http://mydomain.com/wp-admin/admin-ajax.php,该参数称为具有值&#39; my_plugin_function&#39;的操作。

我不经常直接提交表单但是使用jQuery AJAX会是这样的:

$.ajax({
    type: "POST",
    url: "http://mydomain.com/wp-admin/admin-ajax.php",
    data: {'action' : 'my_plugin_function, 'myvar':'another_var'},
    error: function(jqXHR, textStatus, errorThrown){                                        
        console.error("The following error occured: " + textStatus, errorThrown);                                                       
    },
    success: function(data) {                                       
        console.log("Hooray, it worked!");                                                                  
    }
});

您可以在http://codex.wordpress.org/AJAX_in_Plugins

中找到更多信息