Cách lấy dữ liệu JSON từ url trong WordPress

Lưu ý khi làm việc với định dạng JSON. Hiện tại, wpDataTables chấp nhận định dạng này và chỉ định dạng này của JSON (xem ví dụ). một mảng một cấp của các đối tượng có cấu trúc giống nhau trong đó mỗi đối tượng sẽ được phân tích thành một hàng và mỗi trường bên trong đối tượng dưới dạng một ô. Nếu phần mềm của bạn không trả về định dạng này, bạn cần chuẩn bị, chẳng hạn như một số bộ điều hợp PHP để trả về một trong các định dạng mà wpDataTables sẽ chấp nhận

Định dạng JSON (Ký hiệu đối tượng JavaScript) lần đầu tiên được giới thiệu như một cách đơn giản để tuần tự hóa và xâu chuỗi các đối tượng hoặc mảng để sử dụng trong các đoạn mã JavaScript. JSON cuối cùng đã được chứng minh là rất tiện lợi, nó đã trở nên phổ biến rộng rãi và được sử dụng làm tiêu chuẩn cho các dịch vụ web khác nhau. Nhiều nền tảng trực tuyến có thể trả về dữ liệu ở định dạng này và có thể dễ dàng tạo dữ liệu theo cách thủ công bằng hầu hết các ngôn ngữ lập trình được sử dụng trên web. wpDataTables cũng hỗ trợ định dạng JSON làm nguồn dữ liệu đầu vào

Trong ví dụ này, chúng tôi sẽ sử dụng tệp JSON mẫu có dữ liệu cho 100 nhân viên tưởng tượng. Bạn có thể tải xuống tệp này để sử dụng lại qua liên kết này

Có thể bạn đã biết hoặc chưa biết, API JSON REST của WordPress sắp ra mắt cho phiên bản tương lai của WordPress. Đây sẽ là một trong những bổ sung quan trọng và có ảnh hưởng nhất đối với lõi WordPress mà chúng ta có thể thấy, đặc biệt đối với những người sử dụng WordPress làm khung để tạo ứng dụng web và thiết bị di động. Việc đưa vào một API tiêu chuẩn, dễ sử dụng và có thể mở rộng cho WordPress mở ra vô số khả năng mới về cách chúng tôi xây dựng các ứng dụng với WordPress trong tương lai

Nhưng nếu bạn không muốn đợi WP-API được đưa vào hoặc sử dụng phiên bản plugin chính thức của WP-API thì bạn sẽ làm gì? . Điều này có thể cần thiết cho lệnh gọi AJAX trong trang web của bạn hoặc để cho phép bên thứ ba truy cập vào một số dữ liệu của bạn. Tôi sẽ chỉ cho bạn một cách nhanh chóng để thiết lập điểm cuối của riêng bạn và trả về dữ liệu của bạn ở định dạng JSON

Thiết lập ví dụ của chúng tôi

Ví dụ của chúng tôi, chúng tôi có nhiệm vụ cực kỳ quan trọng là tạo một nơi để lưu trữ ảnh GIF động của mình và cung cấp một cách dễ dàng để truy cập các liên kết từ bên thứ ba. Chúng tôi muốn truy cập điều này bằng cách chuyển vào một thẻ và tất cả những gì chúng tôi cần lấy lại là liên kết tới gif và một mô tả ngắn về nó. Đối với điều này, chúng tôi sẽ tạo một CPT mới chỉ với hình ảnh và tiêu đề nổi bật và phân loại không phân cấp

function wds_gif_cpt_and_tax() {

    $cpt_args = array(
        'label'   => 'GIFs',
        'show_ui' => true,
        'supports' => array( 'title', 'thumbnail' ),
    );
    register_post_type( 'wds_gif', $cpt_args );

    $tax_args = array(
        'label'   => 'GIF Tags',
    );
    register_taxonomy( 'wds_gif_tag', 'wds_gif', $tax_args );

}
add_action( 'init', 'wds_gif_cpt_and_tax' );

Tạo điểm cuối của chúng tôi

Tiếp theo, chúng tôi sẽ sử dụng một phần của API viết lại WordPress để đăng ký đúng thẻ viết lại và sau đó thêm quy tắc viết lại để chúng tôi có thể truy cập thẻ này tại http://example.com/gifs/tag/. Đối với điều này, chúng tôi sử dụng các hàm

function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
0 và
function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
1Như bạn có thể thấy, chúng tôi sử dụng một biểu thức chính quy đơn giản để phân tích cú pháp thẻ đang được chuyển đến URL điểm cuối. Chúng tôi sẽ sử dụng thẻ này sau để truy vấn loại bài đăng tùy chỉnh GIF của chúng tôi

function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );

Xuất dữ liệu

Bây giờ, chúng tôi cần đưa dữ liệu ra điểm cuối mới để có thể truy cập vào các GIF động quan trọng đó. Trước tiên, chúng tôi sẽ gọi toàn cầu

function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
2 để chúng tôi có thể tìm đúng thẻ ghi lại từ URL của chúng tôi. Chúng tôi đang kiểm tra sự tồn tại của chuỗi truy vấn
function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
3 mà chúng tôi đã viết lại thành
function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
4 trong URL của mình. Nếu điều này không tồn tại, chúng tôi sẽ quay lại và thoát khỏi chức năng này. Nếu nó hoạt động, chúng tôi thiết lập mảng mà chúng tôi sẽ chuyển đi ở định dạng JSON và sau đó chạy vòng lặp WP_Query tiêu chuẩn cho loại bài đăng tùy chỉnh mới của chúng tôi. Chúng tôi sẽ chạy truy vấn phân loại đối với thẻ này được chuyển sau
function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
4 trong URL

Sau khi hoàn thành vòng lặp, chúng tôi sẽ gửi mảng dữ liệu ở định dạng JSON bằng cách sử dụng

function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
0. Hàm này sẽ mã hóa mảng dưới dạng JSON, lặp lại mảng đó và sau đó chạy
function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
1 để kết thúc bất kỳ hành động nào khác có thể xảy ra sau đó

function wds_gif_endpoint_data() {

    global $wp_query;

    $gif_tag = $wp_query->get( 'wds_gif' );

    if ( ! $gif_tag ) {
        return;
    }

    $gif_data = array();

    $args = array(
        'post_type'      => 'wds_gif',
        'posts_per_page' => 100,
        'wds_gif_tag'    => esc_attr( $gif_tag ),
    );
    $gif_query = new WP_Query( $args );
    if ( $gif_query->have_posts() ) : while ( $gif_query->have_posts() ) : $gif_query->the_post();
        $img_id = get_post_thumbnail_id();
        $img = wp_get_attachment_image_src( $img_id, 'full' );
        $gif_data[] = array(
            'link'  => esc_url( $img[0] ),
            'title' => get_the_title(),
        );
    endwhile; wp_reset_postdata(); endif;

    wp_send_json( $gif_data );

}
add_action( 'template_redirect', 'wds_gif_endpoint_data' );

Kết quả

Giờ đây, bạn có thể nhập GIF động yêu thích của mình vào quản trị viên WordPress trong Loại bài đăng tùy chỉnh mới và gắn thẻ chúng bằng một số từ khóa thích hợp và bạn sẽ có thể sử dụng một URL dễ dàng để truy cập dữ liệu này ở định dạng JSON bằng cách nối thêm phần sên của thẻ . Ví dụ: bạn có thể sử dụng

function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
2 để truy cập tất cả ảnh GIF yêu thích của mình về Bluths. Bạn sẽ thấy một mảng dữ liệu JSON đẹp mắt như bên dưới

Cách lấy dữ liệu JSON từ url trong WordPress

Tại sao sử dụng phương pháp này?

Tất nhiên, đây không phải là phương pháp duy nhất để lấy dữ liệu của bạn. Như đã nêu ở trên, WP-API đang trên đường chân trời. Điều đó sẽ mở ra một API chung cho tất cả các phần của WordPress mà bạn có thể xây dựng dựa trên đó và sẽ là tiêu chuẩn trong tương lai. Tuy nhiên, đôi khi bạn có thể cần một số dữ liệu nhanh và bẩn. Điều này có thể được sử dụng để cấp quyền truy cập vào dịch vụ của bên thứ ba hoặc khi bạn đang thực hiện lệnh gọi AJAX giao diện người dùng trên trang web của riêng mình

Bạn có thể hỏi, tại sao bạn không sử dụng

function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
3 để thực hiện các cuộc gọi AJAX đó? . Vì lý do chính đáng, WordPress không lưu trữ các yêu cầu trong wp-admin. Nếu bạn có một trang web có lưu lượng truy cập cao hoặc muốn có hiệu suất tốt nhất có thể, bạn chắc chắn muốn sử dụng bộ nhớ đệm bất cứ khi nào có thể. Việc sử dụng
function wds_gif_endpoint() {

    add_rewrite_tag( '%wds_gif%', '([^&]+)' );
    add_rewrite_rule( 'gifs/([^&]+)/?', 'index.php?wds_gif=$matches[1]', 'top' );

}
add_action( 'init', 'wds_gif_endpoint' );
3 ở giao diện người dùng có khả năng làm giảm một trang web có lưu lượng truy cập cao nếu không được sử dụng đúng cách. Khi bạn tạo điểm cuối của riêng mình, bạn có thể thoải mái thêm vào bộ nhớ đệm của mình nếu thấy phù hợp

Làm cách nào để lấy dữ liệu JSON từ URL trong PHP?

$url = "http. // urlToYourJsonFile. com"; $json = file_get_contents($url); $json_data = json_decode($json, true); echo "Mã thông báo của tôi. ". $json_data["access_token"]; Có nhiều cách tiếp cận khác nhau để giải quyết cùng một vấn đề Get Json From Url Php.

JSON có hoạt động với WordPress không?

Thật không may, không có plugin WP-REST-API, WordPress không xử lý tốt dữ liệu JSON hoặc hoàn toàn không . Đó là bởi vì tất cả các biểu mẫu đều gửi loại dữ liệu x-www-form-urlencoding, nghĩa là khi bạn ĐĂNG nội dung nào đó (như gửi một bài viết mới), dữ liệu sẽ được thoát và mã hóa trong URL.

URL API JSON là gì?

API JSON kiểm tra loại thực thể và gói để cung cấp URL để truy cập từng loại thực thể bằng cách sử dụng các phương thức HTTP tiêu chuẩn, GET, POST, PATCH và DELETE (we will discuss more on HTTP methods while talking about Document Structure). JSON is not simply a format like JSON or HAL+JSON.

JSON trong WordPress là gì?

JSON là một định dạng dữ liệu chuẩn mở, nhẹ và con người có thể đọc được, đồng thời trông giống như các Đối tượng làm trong JavaScript .