wordpress插件开发之添加restfull风格api

133次阅读
没有评论

业余时间搞wordpress插件开发有一段时间了,关于添加restfull风格api之前搞过,最近改点东西发现居然忘了,折腾好久才弄明白(官网文档有坑啊)。

总的来说,添加rest api有2种方法:

1、register_rest_route方法

register_rest_route( string $namespacestring $routearray $args = array()bool $override = false )

add_action('rest_api_init', function () {
    register_rest_route('ssc_api/v1', '/test', array(
        'methods' => 'GET',
        'callback' => 'seekhub_localapi',
        // 'callback' => function(){
        //     wp_send_json(['t' => $_GET['t']]);
        // },
    ));
  } 
);

访问路由:/wp-json/ssc_api/v1/test  注意,需要在注册的路由命名空间前面加上/wp-json,不然访问不到,官网文档就没说啊。。。

2、do_action( “wp_ajax_{$action}” )方法

官方解释:为登录用户触发经过身份验证的 ajax操作。这个很直观吗,就不多说了,照着文档基本没问题。

const SH_Tag = 'seekhub_collector';
function seekhub_collector_menu_callback(){
    wp_enqueue_media();

    $TC_Nonce = wp_create_nonce(SH_Tag);
    Collector::initData();

    // wp_enqueue_media();
    include_once(SH_Plugin_DIR.'views/home.php');
}
function seekhub_collector(){
    $pdata = array_merge($_POST, $_GET);
    if(!isset($pdata['_nonce']) || !wp_verify_nonce($pdata['_nonce'], SH_Tag)){
        wp_send_json(['code' => 403, 'msg' => 'hack. '.json_encode($pdata)]);
    }

    // 解析路由
    wp_send_json(Collector::parse($pdata));
}
add_action('wp_ajax_seekhub_collector', 'seekhub_collector');

访问路由:/wp-admin/admin-ajax.php?action=seekhub_collector  通过传参解析路由,并且访问时参数必须携wp_create_nonce(SH_Tag)创建的token.

facingscreen
版权声明:本站原创文章,由 facingscreen2022-08-29发表,共计1209字。
转载说明:本文为搜栈网原创文章,除特殊说明外皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码