WordPress: วิธีต่อ API ของ Bitnami WordPress บน AWS Cloud

ผมลองเอา WordPress มานั่งเล่นดู โดยตั้งโจทย์ว่า
1. จะเขียนบล็อกจากที่อื่นให้มาโผล่ที่ WordPress ได้มั๊ย
2. จะดึงเอาบล็อกจาก WordPress ไปใส่ที่เว็บไซต์หลักได้มั๊ย (ดึงจาก blog.yourdomain.com ไปที่ yourdomain.com)

พบคำตอบว่าทำได้ทั้ง 2 ข้อ โดยใช้ JWT Authentication for WP REST API เราสามารถเชื่อม WordPress กับ เว็บไซต์ได้ โดยผมจะเขียนเว็บด้วย Reactjs

การใช้ปลั๊กอินตัวนี้ต้องเข้าไปแก้ไขไฟล์ .htaccess

โดยต้องเติมโค๊ดต่อไปนี้เข้าไป

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

และโค๊ด

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

พอดีผมใช้ WordPress ของ Bitnami ซึ่งวางไว้บน AWS Cloud นโยบายความปลอดภัยของเขาคือผมแก้ไฟล์ .htaccess ไม่ได้ เขาแนะนำให้ไปแก้ที่ไฟล์ htaccess.conf แทน ซึ่งวางไว้ที่ /opt/bitnami/apps/wordpress/conf/htaccess.conf เห็นว่าให้ผลเหมือนกัน ผมก็ลองถาม Google ดูว่าโดยรายละเอียดแล้วเขียนอย่างไร มันก็ให้ลิงค์นี้มา

ผมเขียนตามได้ดังนี้ ให้ดูที่บรรทัด 37-42

มันมี syntax แปลกๆแต่ไม่รู้แหละเขียนตามไปก่อน โดยเติม

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

ก่อน close tag </Directory>

และเติม

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

หลัง close tag </Directory>

นอกนั้นให้ทำตามคำแนะนำได้ตามปกติคือเข้าไปแก้ไฟล์ wp-config.php โดยเติม

define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');

และ

define('JWT_AUTH_CORS_ENABLE', true);

เข้าไป Bitnami อนุญาตให้แก้ได้ตามปกติ

เสร็จแล้วลองเข้าไปที่ Postman

ทดสอบโดย เลือก POST ใส่ชื่อURl ของบล็อก ตามด้วย /wp-json/jwt-auth/v1/token  ดูรูปด้านล่างประกอบ

  1. ใส่ Headers ตามนี้ครับ

KEY: Content-Type
VALUE: application/json

2. ใส่ Body ตามนี้ครับ (เราต้องขอ Token ก่อน) เลือก raw เลือก JSON(application/json) ดูรูปด้านล่างประกอบครับ

{

“username”: “username ที่ใช้ล็อกอินเข้า WordPress Backend”,
“password”: “password ที่ใช้ล็อกอินเข้า WordPress Backend”

}

ถ้าใส่ข้อมูลถูกต้อง API จะให้ token มา เมื่อได้ token มาแล้วเราก็เอาไปใช้ในการ Access เข้า WordPress API ซึ่งจะเขียนในตอนหน้า


ใส่ความเห็น