站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        WordPress JSON 處理相關(guān)函數(shù)大全

        JSON處理是WordPress開發(fā)中的經(jīng)常需要處理的一項(xiàng)工作,為此WordPress 定義了一堆JSON處理的函數(shù),下面由WordPress教程欄目給大家做一下統(tǒng)一的介紹。

        WordPress JSON 處理相關(guān)函數(shù)大全

        wp_json_encode

        編碼成 JSON,并且進(jìn)行一些完整性檢查。

        wp_json_encode( $data, $options = 0, $depth = 512 )

        簡(jiǎn)單說(shuō)下 WordPress 引進(jìn)這個(gè)函數(shù)的原因:

        首先不同 PHP 版本 json_encode 函數(shù)支持不同的參數(shù)。PHP 5.3 之前只支持 一個(gè)參數(shù) $data,PHP 5.3 引進(jìn)了 $options 參數(shù),PHP 5.5 又引進(jìn)了 $depth 參數(shù)。所以 WordPress 適配不同版本的 PHP,wp_json_encode 都支持三個(gè)參數(shù),兼容不同版本的 PHP。

        在 json_encode 之前,wp_json_encode 使用函數(shù) _wp_json_prepare_data 對(duì)數(shù)據(jù)進(jìn)行清理,如果 boolean,integer,double,string,NULL 這些類型,直接返回,如果數(shù)組,繼續(xù)使用 _wp_json_prepare_data 函數(shù)對(duì)數(shù)組中的每個(gè)元素進(jìn)行清理,如果是對(duì)象,如果該對(duì)象的 class 實(shí)現(xiàn)了 JsonSerializable 接口,則返回 $data = $data->jsonSerialize(),否則,繼續(xù)使用 _wp_json_prepare_data 對(duì)對(duì)象中的每個(gè)屬性進(jìn)行清理。

        然后使用 json_encode 進(jìn)行編碼,如果不成功,則使用 _wp_json_sanity_check 對(duì)數(shù)據(jù)進(jìn)行完整性處理,最后再使用 json_encode 進(jìn)行編碼。_wp_json_sanity_check 主要使用函數(shù) _wp_json_convert_string 對(duì)數(shù)據(jù)進(jìn)行深度 UTF-8 檢測(cè)和轉(zhuǎn)換。

        所以建議使用 wp_json_encode 對(duì)變量進(jìn)行 JSON 編碼,它的可靠性更高。

        wpjam_json_encode

        wp_json_encode( $data, $options = JSON_UNESCAPED_UNICODE, $depth = 512 )

        PHP5.4 JSON 新增了一個(gè)選項(xiàng):JSON_UNESCAPED_UNICODE,故名思議:不要編碼成 Unicode,讓中文更可讀。

        所以我們寫了一個(gè) wpjam_json_encode 函數(shù),相比 wp_json_encode,就是將 $options 參數(shù)默認(rèn)值設(shè)置為 JSON_UNESCAPED_UNICODE,這樣直接使用 wpjam_json_encode($data),中文就不會(huì)被編碼成 unicode,更可讀。

        只要你安裝 WPJAM Basic 插件,你的 WordPress 就會(huì)有這個(gè)函數(shù)。

        wp_send_json

        直接發(fā)送 JSON 數(shù)據(jù)。

        wp_send_json( $response, $status_code = null )

        他首先輸出 application/json 的 Content-Type 頭,如果 $status_code 不為空,則輸出 $status_code 的狀態(tài)碼。

        然后調(diào)用 wp_json_encode 對(duì)數(shù)據(jù)進(jìn)行編碼。

        wpjam_send_json

        wpjam_send_json( $response, $status_code = null )

        同樣為了能夠 JSON 編碼之后,中文更可讀,我們也寫了 wpjam_send_json 函數(shù),它和 wp_send_json 幾乎一致,只是調(diào)用對(duì)數(shù)據(jù)進(jìn)行編碼的函數(shù)是 wpjam_json_encode。

        另外如果傳入的數(shù)據(jù)是 WP_Error 的實(shí)例,那么 wpjam_send_json 直接輸出 errcode 和 errmsg JSON。如果沒有設(shè)置 errcode,則 wpjam_send_json 自動(dòng)加上 errcode=>0

        安裝 WPJAM Basic 插件,你的 WordPress 就會(huì)有這個(gè)函數(shù)。

        wp_send_json_success 和 wp_send_json_error

        WordPress 還提供 wp_send_json_success 和 wp_send_json_error 兩個(gè)函數(shù):

        wp_send_json_success( $data = null, $status_code = null ) wp_send_json_error( $data = null, $status_code = null )

        wp_send_json_success 先輸出 success 為 true,然后把數(shù)據(jù) $data 放到 data 里面輸出。wp_send_json_error 則會(huì)判斷 $data 是否為 WP_Error 實(shí)例,如果是,則輸出 code 和 message 的數(shù)組。我們實(shí)現(xiàn)的 wpjam_send_json 已經(jīng)能夠自動(dòng)化處理這些錯(cuò)誤了。

        wp_is_json_request

        判斷當(dāng)前請(qǐng)求是不是 JSON 請(qǐng)求,或者返回 JSON 結(jié)果,這個(gè)函數(shù)沒有參數(shù),直接使用:

        wp_is_json_request()

        它通過(guò)判斷 $_SERVER['HTTP_ACCEPT'] 中含有 application/json,或者 $_SERVER['CONTENT_TYPE'] 等于 application/json。

        wp_is_jsonp_request

        判斷當(dāng)前請(qǐng)求是不是 JSONP 請(qǐng)求,或者返回 JSONP 結(jié)果,這個(gè)函數(shù)沒有參數(shù),直接使用:

        wp_is_jsonp_request()

        它首先判斷 $_GET['_jsonp'] ,是否存在,然后通過(guò)函數(shù) wp_check_jsonp_callback 判斷它的值是否合法。

        wp_check_jsonp_callback

        判斷 JSONP callback 是不是一個(gè)一個(gè)合法的 JavaScript callback 函數(shù):

        wp_check_jsonp_callback( $callback )

        合法的 JavaScript callback 函數(shù)只能數(shù)字加字符,以及英文點(diǎn)號(hào)。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 欧美日韩综合精品| 亚洲国产精品成人久久| 欧美精品亚洲日韩aⅴ| 精品视频在线免费观看| 日韩精品久久久久久免费| 久久se这里只有精品| 欧美精品福利在线视频| 久久精品国产亚洲AV大全| 亚洲а∨天堂久久精品9966| 国产乱人伦精品一区二区在线观看 | 北条麻妃国产九九九精品视频| 久久精品国产一区二区电影| 亚洲精品免费观看| 国产成人精品日本亚洲网址| 国精无码欧精品亚洲一区| 午夜福利麻豆国产精品| 久久精品国产精品亜洲毛片| 91精品国产高清久久久久久io| 精品国内自产拍在线观看| 51国偷自产精品一区在线视频| 亚洲国产精品自在拍在线播放 | 成人亚洲日韩精品免费视频| 日韩人妻无码精品久久久不卡| 国产成人精品a视频一区| 精品在线免费观看| 国产成人亚洲合集青青草原精品| 精品久久久久久久中文字幕| 国产精品午夜福利在线无码 | 亚洲国产精品狼友中文久久久| 国产精品自产拍在线观看| 99久久国产热无码精品免费 | 精品人妻少妇嫩草AV无码专区 | 亚洲国产精品一区| 日韩精品www| 久久Av无码精品人妻系列| 热re99久久6国产精品免费| 四虎国产精品永久在线| 少妇人妻无码精品视频app| 欧美日韩国产精品系列| 四虎精品免费永久在线| 国产午夜精品一区二区三区|