Cách tạo api trong wordpress

Để viết API để nhận input và lưu vào cơ sở dữ liệu (db) trong WordPress, bạn có thể thực hiện theo các bước sau:

  1. Tạo một plugin mới trong WordPress bằng cách tạo một thư mục mới trong thư mục wp-content/plugins/ và tạo một tệp PHP mới trong thư mục đó.
  2. Trong tệp PHP mới, tạo một hàm để đăng ký các tuyến đường (route) API của plugin. Ví dụ:
function register_api_routes() {
    register_rest_route( 'my-plugin/v1', '/submit-data/', array(
        'methods' => 'POST',
        'callback' => 'submit_data',
    ) );
}
add_action( 'rest_api_init', 'register_api_routes' );

Tạo hàm callback để xử lý request của API. Trong hàm callback này, bạn có thể lấy dữ liệu từ request và lưu vào cơ sở dữ liệu. Ví dụ:

function submit_data( $request ) {
    $data = $request->get_json_params();
    // Xử lý dữ liệu ở đây
    $wpdb->insert( 'my_table', array( 'data' => $data ) );
    return new WP_REST_Response( array( 'success' => true ) );
}

Trong ví dụ trên, $data lấy từ request và được lưu vào bảng my_table trong cơ sở dữ liệu của WordPress sử dụng $wpdb.

  1. Sau đó, bạn có thể sử dụng một công cụ như Postman để gửi request đến API của plugin để kiểm tra và xác nhận rằng dữ liệu đã được lưu vào cơ sở dữ liệu.

Lưu ý rằng, việc lưu trữ dữ liệu trực tiếp vào cơ sở dữ liệu của WordPress bằng $wpdb có thể không phù hợp với các quy tắc phát triển chặt chẽ và an toàn nhất. Để tối ưu hơn, bạn có thể sử dụng một ORM (Object-Relational Mapping) như wpdb hoặc các plugin hỗ trợ để thao tác với cơ sở dữ liệu.


function submit_data($request) {
    global $wpdb;
    $data       = $request->get_json_params();
    $table_name = $wpdb->prefix . 'thanks';
    $wpdb->insert($table_name, ['id'           => null,
                                'user_id_from' => 1,
                                'user_id_to'   => 1,
                                'content'      => 'slfkjasl;dfkjs;ldfkj'
    ]);

    return new WP_REST_Response(['success' => true]);
}

function register_api_routes() {
    register_rest_route('my-plugin/v1', '/submit-data/', [
        'methods'  => 'POST',
        'callback' => 'submit_data',
    ]);
}

add_action('rest_api_init', 'register_api_routes');

function get_user_info() {
    register_rest_route('my-plugin/v1', '/get-data/', [
        'methods'  => 'GET',
        'callback' => 'get_data_info',
    ]);
}
add_action('rest_api_init', 'get_user_info');
function get_data_info($request) {
    global $wpdb;
    $results = $wpdb->get_results("SELECT count(*) as total FROM wp_thanks where id =1");

    return new WP_REST_Response(['success' => true, 'data' => $results]);
}

Để thực hiện một SELECT query với $wpdb trong WordPress, bạn có thể sử dụng phương thức get_results() của đối tượng $wpdb. Phương thức này sẽ trả về tất cả các kết quả từ truy vấn của bạn dưới dạng một mảng đối tượng.

Ví dụ, nếu bạn muốn lấy tất cả các bản ghi trong bảng wp_posts, bạn có thể sử dụng đoạn mã sau:

$results = $wpdb->get_results("SELECT * FROM wp_posts");

Kết quả trả về sẽ là một mảng đối tượng chứa tất cả các bản ghi trong bảng wp_posts.

Bạn cũng có thể thêm điều kiện WHERE vào truy vấn của mình để lọc các kết quả. Ví dụ:

$results = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_status = 'publish'");

Đoạn mã trên sẽ trả về tất cả các bài đăng đã được xuất bản trong bảng wp_posts.

Related Posts