看名字,一個(gè)是小工具的配置數(shù)據(jù)
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)豐都免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
一個(gè)是文章數(shù)據(jù),
這兩個(gè)都是演示數(shù)據(jù),xml文件使用wordpress導(dǎo)入工具導(dǎo)入
json看主題后臺(tái)設(shè)置面板有沒有位置導(dǎo)入。
WordPress添加熊掌號(hào)的json_id結(jié)構(gòu)化數(shù)據(jù)代碼如下:
PHP代碼,用于獲取文章摘要內(nèi)容,代碼添加在當(dāng)前主題functions.php中
?php//獲取文章/頁面摘要
function?fanly_excerpt($len=220){
if?(?is_single()?||?is_page()?){
global?$post;
if?($post-post_excerpt)?{
$excerpt??=?$post-post_excerpt;
}?else?{
if(preg_match('/p(.*)\/p/iU',trim(strip_tags($post-post_content,"p")),$result)){
$post_content?=?$result['1'];
}?else?{
$post_content_r?=?explode("\n",trim(strip_tags($post-post_content)));
$post_content?=?$post_content_r['0'];
}
$excerpt?=?preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,0}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s','$1',$post_content);
}
return?str_replace(array("\r\n",?"\r",?"\n"),?"",?$excerpt);
}}?
json_id數(shù)據(jù),添加在head頭部中:
script?type="application/ld+json"{
"@context":?"",
"@id":?"?php?the_permalink();??",
"appid":?"這里請(qǐng)?zhí)顚懶苷铺?hào)ID",
"title":?"?php?the_title();??",
"images":?["?php?echo?catch_that_image()??"],
"description":?"?php?echo?fanly_excerpt()?",
"pubDate":?"?php?echo?get_the_time('Y-m-d\TH:i:s')?",
}/script
appid就是熊掌號(hào)ID,自己修改一下即可。
以上代碼來源于淚雪博客:網(wǎng)頁鏈接?版權(quán)歸屬原作者
某個(gè)請(qǐng)求返回JSON之后,使用PHP函數(shù)json_decode()解析即可:
先定義一個(gè)檢測(cè)返回?cái)?shù)據(jù)是否有效的函數(shù):
?php?
/**
*?驗(yàn)證返回的有效性
*?@param??[type]?$response?[description]
*?@return?[type]???????????[description]
*?@author?suifengtec???????coolwp.com
*/
function?validate_raw_response(?$response?)?{
if(?is_wp_error(?$response?)?)?
return?false;
$response_code?=?wp_remote_retrieve_response_code(?$response?);
if(?false?===?strstr(?$response_code,?'200'?)?)
return?false;
return?true;
}
2. 據(jù)URL和參數(shù)返回?cái)?shù)據(jù),數(shù)據(jù)有效了返回,無效了返回false:
/**
*?據(jù)提供的URL和參數(shù)請(qǐng)求數(shù)據(jù)
*?@param??[type]?$url??[description]
*?@param??[type]?$args?[description]
*?@return?[type]???????[description]
*?@author?suifengtec???coolwp.com
*/
function?trigger($url,?$args)?{
//?fire?request
$response?=?wp_remote_request(?$url,?$args?);
//?validate?raw?response
if(?validate_raw_response(?$response?)?===?false?)?{
return?false;
}
//?decode?the?response
$_response?=?json_decode(?wp_remote_retrieve_body(?$response?)?);
//?response?should?be?an?object
if(?!?is_object(?$_response?)?)?{
return?false;
}
return?$_response;
}
祝愉快!
如何快速為wordpress網(wǎng)站開發(fā)對(duì)外的數(shù)據(jù)接口
隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,越來越的傳統(tǒng)站點(diǎn)都在為移動(dòng)化做努力,如開發(fā)一套手機(jī)專用的網(wǎng)站主題,甚至專門為其開發(fā)app!但是開發(fā)app(非嵌入移動(dòng)版網(wǎng)頁的PhoneGap),就會(huì)涉及到接口調(diào)用!如何才能在不影響網(wǎng)站原來內(nèi)容、模板的情況下快速開發(fā)出可供第三方調(diào)用的數(shù)據(jù)接口呢?
也許有同學(xué)會(huì)說,wordpress具有強(qiáng)大的主題切換能力,通過一個(gè)簡(jiǎn)單的主題預(yù)覽插件就可以實(shí)現(xiàn)不同主題顯示不同的內(nèi)容,接口就在另一個(gè)主題下實(shí)現(xiàn)!
沒錯(cuò),這種方式確實(shí)可以,但是由于wordpress目前cms功能越來越強(qiáng)大,很多網(wǎng)站都使用了自定義模板、register_post_type、register_nav_menus等功能,wordpress的主題切換不能很好的兼容這些地方(即使register_post_type代碼照搬)。即使克服了以上的困難,如果以后網(wǎng)站增加版塊或者新功能,要維護(hù)就得同時(shí)改動(dòng)網(wǎng)站主題和api主題模板,工作量巨大。
那么有沒有什么簡(jiǎn)單的方法呢?
當(dāng)然有,不然我在這里羅里吧嗦開頭那些屁話干啥!我的這個(gè)方法可以在原有的主題基礎(chǔ)上進(jìn)行方便的接口開發(fā)。
如何做呢?
首先在網(wǎng)站所用主題的functions.php文件中增加以下代碼:
1: if(isset($_GET['json'])){
2: add_filter('template_include','wp_my_api');
3: }
4: function wp_my_api($template){
5: return preg_replace('#([^/]+\.php)#','api/$1',$template);
6: }
然后在網(wǎng)站當(dāng)前所用主題目錄下新建一個(gè)文件夾,名字為“api”。然后把主題下的模板文件復(fù)制進(jìn)api文件夾里,就可以對(duì)這些模板進(jìn)行接口數(shù)據(jù)轉(zhuǎn)化了。比如輸出json或者xml等。
這種方法原理就是將wordpress的模板重新定義到api文件下尋找同名模板文件。如果你愿意做更多的探尋,還可以實(shí)現(xiàn)更加智能的接口模板匹配功能出來。我這里就展示了最簡(jiǎn)單的方法。
這種方法完全不影響網(wǎng)站原有的模板文件,不需要改動(dòng)任何原有模板,接口的實(shí)現(xiàn)在api文件夾下的同名文件里實(shí)現(xiàn)。
使用示例
要將你的主題下的page.php模板進(jìn)行json化輸出,只需要在api文件下新建一個(gè)叫page.php的模板(或者復(fù)制page.php過來),里面寫入:
1: ?php //這里偷懶了,直接將wordpress的$wp_query對(duì)象json化輸出,實(shí)際中最好提取自己需要的內(nèi)容輸出,以減少http傳輸量
2: header("Content-type:application/json");
3: if(isset($_GET['debug'])){
4: print_r($wp_query);
5: }else echo json_encode($wp_query);
比如網(wǎng)站有個(gè)頁面,地址是,其對(duì)應(yīng)的接口地址就是。如果要調(diào)試,查看json接口,可以加上debug參數(shù),如;debug。
是不是很簡(jiǎn)單呢?如果你的網(wǎng)站不需要這個(gè)接口了,只需要直接刪除api文件夾就行了。