JSON processing is a task that often needs to be processed in WordPress development. For this reason, WordPress defines a bunch of JSON processing functions. The following is done by the WordPress Tutorial column. Let’s give a unified introduction.
wp_json_encode
Encode to JSON and perform some integrity checks.
wp_json_encode( $data, $options = 0, $depth = 512 )
Let’s briefly talk about the reason why WordPress introduced this function:
First of all, different PHP versions of the json_encode function support different parameters. PHP 5.3 previously supported only one parameter, $data. PHP 5.3 introduced the $options parameter, and PHP 5.5 introduced the $depth parameter. Therefore, WordPress adapts to different versions of PHP, and wp_json_encode supports three parameters and is compatible with different versions of PHP.
Before json_encode, wp_json_encode uses the function _wp_json_prepare_data to clean the data. If these types are boolean, integer, double, string, NULL, it will be returned directly. If it is an array, continue to use the _wp_json_prepare_data function to clean each element in the array. The element is cleaned. If it is an object, if the class of the object implements the JsonSerializable interface, then $data = $data->jsonSerialize() is returned. Otherwise, continue to use _wp_json_prepare_data to clean each attribute in the object.
Then use json_encode for encoding. If unsuccessful, use _wp_json_sanity_check to perform integrity processing on the data, and finally use json_encode for encoding. _wp_json_sanity_check mainly uses the function _wp_json_convert_string to perform deep UTF-8 detection and conversion of data.
So it is recommended to use wp_json_encode to JSON encode variables, which is more reliable.
wpjam_json_encode
wp_json_encode( $data, $options = JSON_UNESCAPED_UNICODE, $depth = 512 )
PHP5.4 JSON has a new option: JSON_UNESCAPED_UNICODE, hence the name: Do not encode into Unicode to make Chinese more readable.
So we wrote a wpjam_json_encode function. Compared with wp_json_encode, the default value of the $options parameter is set to JSON_UNESCAPED_UNICODE. In this way, if wpjam_json_encode($data) is used directly, Chinese will not be encoded into unicode and is more readable. .
As long as you install the WPJAM Basic plugin, your WordPress will have this function.
wp_send_json
Send JSON data directly.
wp_send_json( $response, $status_code = null )
He first outputs the Content-Type header of application/json. If $status_code is not empty, then outputs the status code of $status_code.
Then call wp_json_encode to encode the data.
wpjam_send_json
wpjam_send_json( $response, $status_code = null )
Also in order to make Chinese more readable after JSON encoding, we also wrote the wpjam_send_json function, which is almost the same as wp_send_json, just calling The function to encode the data is wpjam_json_encode.
In addition, if the incoming data is an instance of WP_Error, then wpjam_send_json directly outputs errcode and errmsg JSON. If errcode is not set, wpjam_send_json will automatically add errcode=>0
Install the WPJAM Basic plug-in, and your WordPress will have this function.
wp_send_json_success and wp_send_json_error
WordPress also provides two functions, wp_send_json_success and wp_send_json_error:
wp_send_json_success( $data = null, $status_code = null ) wp_send_json_error( $data = null, $status_code = null )
wp_send_json_success First output success as true, and then set The data $data is placed in data and output. wp_send_json_error will determine whether $data is a WP_Error instance. If so, it will output an array of code and message. Our implementation of wpjam_send_json can already handle these errors automatically.
wp_is_json_request
Determine whether the current request is a JSON request, or return a JSON result. This function has no parameters, use it directly:
wp_is_json_request()
It determines that $_SERVER['HTTP_ACCEPT'] contains application/json, or $_SERVER['CONTENT_TYPE'] is equal to application/json.
wp_is_jsonp_request
Determine whether the current request is a JSONP request, or return a JSONP result. This function has no parameters, use it directly:
wp_is_jsonp_request()
It first determines whether $_GET['_jsonp'] exists, and then determines whether its value is legal through the function wp_check_jsonp_callback.
wp_check_jsonp_callback
Determine whether the JSONP callback is a legal JavaScript callback function:
wp_check_jsonp_callback( $callback )
The legal JavaScript callback function can only include numbers plus characters, and English periods.
The above is the detailed content of A complete list of WordPress JSON processing related functions. For more information, please follow other related articles on the PHP Chinese website!