2017-01-19 46 views
2

是否可以創建連接到同一個數據庫但具有自定義表的自定義端點?如果是的話,怎麼樣?Wordpress REST API創建使用自定義表的自定義端點

例如:

wp_TempTable(定製表)

我想......我已搜查多個論壇和網站,但沒有運氣的自定義端點訪問此..

+0

你是什麼意思「自定義表」? API暴露了多個表中的數據,你有什麼想擁有一個「自定義」表? –

+0

我需要自定義表來存儲來自第三方客戶端的一些帳戶信息,這是客戶想要的...但是在發現API僅使用默認表(wp_posts和wp_users)之後... so我搜索了一些其他方式,使API連接到一個單獨的表,但無濟於事...... – HelpMeDoe

回答

1

是它是可能的。這不使用Wordpress推薦的控制器模式,但完成了工作,作業是將傳入的json轉換成自定義表格中的一行(這裏稱爲restaurants)。

function handle_post(WP_REST_Request $request) { 
    global $wpdb; 
    $item = $request->get_json_params(); 

    $fields = array(); 
    $values = array(); 
    foreach($item as $key => $val) { 
     array_push($fields, preg_replace("/[^A-Za-z0-9]/", '', $key)); 
     array_push($values, $wpdb->prepare('%s', $val)); 
    } 
    $fields = implode(", ", $fields); 
    $values = implode(", ", $values); 
    $query = "INSERT INTO `restaurants` ($fields) VALUES ($values)"; 
    $list = $wpdb->get_results($query); 

    return $list; 
} 


add_action('rest_api_init', function() { 
    register_rest_route('restos/v1', '/post', array(
    'methods' => 'POST', 
    'callback' => 'handle_post', 
    'permission_callback' => function() { 
     return current_user_can('edit_others_posts'); 
    } 
)); 
}); 
+0

我得到403(禁止)任何想法?謝謝 – Merlin

+0

由於不使用wpdb-> prepare,你正在爲很多錯誤創建一個巨大的安全漏洞和空間。只是試圖看看當一個值有一個單引號時會發生什麼 –

+1

(剛剛在這個答案中解決了這個問題) –