Create custom POST Method URL

时间:2017-05-30 作者:Patryk Patryk

如何在wordpress中创建自定义post方法url?例如,我将通过ajax将数据发送到URL:

http://example.com/?call_option=option1http://example.com/?call_option=option2

这将在函数中执行我的代码。php(主题文件夹中)

$option = trim($_GET[\'call_option\']);
if(empty($option)) {
    header("Location: ./404");
    die();
} else {    
    if ( $option == \'option1\' ) {
        // do something 
    } else if ( $option == \'option2\' ) {
        // do something 
    }
}
怎么会这样?

2 个回复
最合适的回答,由SO网友:Jiten Gaikwad 整理而成

WordPress内置支持从插件或主题函数中使用AJAX调用。php。

以下是示例:

Javascript代码:

jQuery( document ).on( \'click\', \'.event-trigger\', function() { 
    var ajax_url = "<?php echo admin_url( \'admin-ajax.php\' ); ?>"; //You can define this parameter globally as well.
    jQuery.ajax({
        url : ajax_url,
        type : \'post\',
        data : {
            action : \'youraction\',
            param1: param1,
            param2: param2
        },
        success : function( response ) {
            alert(response)
        }
    });
}) 
在插件文件或函数中编写以下代码。主题中的php文件:

add_action( \'wp_ajax_nopriv_youraction\', \'your_functionname\' ); //This action calls for non-authenticated users as well
add_action( \'wp_ajax_post_youraction\', \'your_functionname\' ); //This action calls only for authenticated user

function your_functionname() {
    //your code goes here
}
参考Ajax Example 了解更多详细信息。

SO网友:Johansson

还有另一个简单的解决方案,即使用REST-API。它返回一个JSON答案,您可以在javaScript、移动应用程序等中使用它。

首先,您必须注册到功能的路由:

add_action( \'rest_api_init\', function () {
    //Path to ajax search function
    register_rest_route( \'patryk/v1\', \'/patryk-rest-api/\', array(
            \'methods\' => \'GET\', 
            \'callback\' => \'my_rest_function\' 
    ) );
});
现在,让我们编写一个函数来返回一些数据:

function my_rest_function(){
    // Return of nothing is sent
    if (!isset($_POST[\'call_option\'])) return;
    // Else, do some calculations and return a value
    $value = $_POST[\'call_option\'];
    // Return the value
    return $data;
}
现在,您可以访问您的函数http://example.com/wp-json/patryk/v1/patryk-rest-api/, 又好又简单。

但是,响应是JSON格式的,因此必须在前端脚本中指定:

jQuery.ajax({
    type: \'GET\', 
    url: \'http://example.com/wp-json/patryk/v1/patryk-rest-api/\', 
    data: { get_param: \'value\' }, 
    dataType: \'json\',
    success: function (data) {
        jQuery.each(data, function(index, element) {
            // Use a loop here to output your data
        });     
    }
});

结束

相关推荐

WooCommerce AJAX跨域加入购物车

我无法从其他域添加到购物车我已经启用了CORS标头,ajax工作正常,但随后对cart状态的ajax查询会导致空响应我想这一定与Cookie/session有关,但不确定是什么(我还没有深入了解WC的内部结构,这几天我的脑袋一直在转,所以我很感谢专家的建议)这就是我在PHP中的内容:add_action( \'wp_ajax_a3_add_to_cart\', \'a3_add_to_cart\' ); add_action( \'wp_ajax_nopriv_a3_add_to_cart\',