2017-01-19 3 views
2

Возможно ли создать пользовательскую конечную точку, подключенную к той же базе данных, но с пользовательской таблицей? если да, то как?Wordpress REST API создает пользовательскую конечную точку, которая использует пользовательскую таблицу

, например:

wp_TempTable (настраиваемая таблица)

Я хочу, чтобы получить доступ к этому с пользовательской конечной точки ... Я искал несколько форумов и сайтов, но не повезло ..

+0

Что значит «пользовательский стол»? API предоставляет данные из нескольких таблиц, что вы думаете о том, что вместо этого есть «обычная» таблица? –

+0

Мне нужна пользовательская таблица для хранения информации об учетной записи, полученной от стороннего клиента, чего хочет клиент ... но после выяснения, что API использует только таблицы по умолчанию (wp_posts и wp_users) ... так Я искал другой способ подключения API к отдельной таблице, но безрезультатно ... – HelpMeDoe

ответ

1

Да это возможно. Это не использует шаблон Controller, рекомендованный 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

(просто исправлено в этом ответе) –

Смежные вопросы