WordPress版微信小程序開發系列(一):WordPress REST API

自動我發佈開源程序WordPress版微信小程序以來,不少WordPress站長在搭建微信小程序的過程當中會碰到各類問題來諮詢我,有些問題其實很簡單,只要仔細看看我寫的文章,就能夠本身解決。不過這些文章裏沒法涵蓋全部的技術點,由於涉及Wordpress和微信小程序兩套程序系統,有些技術點對於小白用戶來講確實有些難度,所以我考慮寫一個系列文章介紹WordPress版微信小程序開發的相關技術要點。php

wordpress-weixin-app-1.png

今天介紹第一個技術要點:WordPress REST API。WordPress REST API沒法訪問是被問到的最多的問題。這個技術點在《利用WordPress REST API 開發微信小程序從入門到放棄》就初步介紹過,更爲詳細使用方法將在後續文章介紹,這裏重點關注,如何纔可讓WordPress REST API正常訪問。html

最多見的問題就是訪問WordPress REST API 的連接的時候顯示404錯誤沒法找到該頁。 REST API是WordPress4.4版本開始提供的功能,不過是以插件的方式提供的,WordPress 4.7版本後才內置到系統裏,若是你的WordPress站是4.7之前的版本,須要下載api插件:https://wordpress.org/plugins...nginx

若是是WordPress 4.7 或更高版本,要想正常訪問 api,須要調整知足兩個條件:web

1.設置WordPress 的固定連接(permalink).json

二、URL重寫(url rewrite),也就是設置WordPress的僞靜態。小程序

1、設置WordPress 的固定連接(permalink)微信小程序

打開Wordpress後臺設置,以下圖所示:api

permalink.png

選擇除了「樸素」之外的其餘選項均可以。不過注意一點:最好在固定連接的最後加上html的爲後綴,雖然不加並不影響json api的使用,但考慮到小程序裏的站內連接目前是經過判斷html的後綴來獲取文章slug值,若是不加html後綴會致使小程序的站內連接沒法跳轉,後續我會考慮完善兼容不帶html後綴的固定連接的方式。安全

1、URL重寫服務器

設置完固定連接後,就能夠能夠經過如下的連接方式來訪問REST API 了,好比查看文章列表的json:

https://www.watch-life.net/in...

可是這種方式看上去並非那麼優雅,中間還夾雜這index.php,若是去掉就是就感受完美一些,這就須要經過URL 重寫來實現,具體重寫的原理就不詳細闡述了,下面給出在不一樣的web服務器下URL重寫代碼。

1.IIS 7服務器

須要安裝URL Rewrite Module。在web.config 文件 加入 URL重寫代碼:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WordPress Rule" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

2.Apache服務器

在WordPress網站根目錄下增長.htaccess文件,加入 URL重寫代碼:

BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

END WordPress

3.nginx服務器

增長一個conf文件好比wordpress.conf,加入 URL重寫代碼:

location / {

try_files $uri $uri/ /index.php?$args;

}

通過URL重寫後,REST API訪問的連接的地址就變成這樣了:

https://www.watch-life.net/wp...。是否是要優雅不少。

特別注意:

1.若是WordPress網站安裝了水煮魚的WPJAM Basic插件,在該插件的設置項裏有個選項:

若是你的博客沒有客戶端,建議屏蔽 REST API 功能。

不要勾選這個選項,若是勾選了,json將沒法訪問。

若是你經過其餘的方式屏蔽了json的訪問,也要取消。

2.若是你擔憂開放Wordpress的json訪問可能對網站的安全帶來影響。能夠參考Jeff的一個解決方法,考慮到微信小程序是經過手機訪問的,那麼就只容許手機來訪問這個api,作必定範圍的防範,若是你是nginx服務器,能夠在config文件里加以下代碼:

location /wp-json {
if ($http_user_agent !~ '(iPhone|Android)'){
return 403;
}
try_files $uri $uri/ /index.php?$args;
}

不過這方法只是權宜之計,只要開放一個功能必然會打來隱患,有得必有失,看你的選擇了。

本文首發地址:https://www.watch-life.net/wo...

相關文章
相關標籤/搜索