
WordPress เป็นหนึ่งใน cms ที่นิยมที่สุดในโลก และคนทำเว็บอย่างผมก็หนีไม่พ้นที่จะต้องใช้ทำงานให้ลูกค้าในบางครั้ง เช่นกันงานด้าน application สำหรับโทรศัพท์ก็มีมาซึ่งผมชอบ Framework 7 มากกว่อันอื่นเนื่องจาก ui ดูดีและวิธีการเขียนที่ไม่ค่อยซับซ้อนเท่าไหร่ เลยมีความคิดว่าจะลองทำ Blog feed application โดยใช้ทั้งสองมารวมกัน สามารถ download code ไปลองเล่นดูได้ครับ
เรามาเริ่มกันจากตัวอย่างครับ หรือ click https://webunique.in.th/blog/simple/wpapi/index.html
จากตัวอย่าง ผมจะดึงบทความจาก blog ของผมมาแสดงครับ
เรามาเริ่มกันเลยครับ
อย่างแรกที่ต้องเตรียม คือ api ของ WP ซึ่งผมก็ไปเจอ Plugin มาชื่อ https://github.com/WP-API/WP-API เข้าไป Donwload และ Install ตามคู่มือเขาได้เลยครับ
หลังจากเรา Active Plugin ตัวนี้แล้วเราจะสามารถเรียก API ของ Blog เราได้ตัวอย่างเว็บผมคือ
https://webunique.in.th/blog/wp-json/wp/v2/posts นั่นคือ Domain + wp-json/wp/v2/posts
ถ้าเราเรียกถูกต้องจะต้องมี json กลับมาตามรูปครับ

หลังจากนั้นแล้วเราจะมาทำ ui เพื่อเรียกข้อมูลจาก api กันครับ
เรื่ม Download Framework 7 จากเว็บผู้พัฒนาได้เลยครับ https://framework7.io/
ซึ่ง ส่วนประกอบสำคัญจะมีอยู่แค่ 3 folder คือ js,img,css และ html ที่อยู่ root
มาเริ่ม code ใน project นี้กันครับ
index.html
– Link CSS และ JS ที่ต้องใช้ ที่สำคัญจะมี main.js ที่เป็น logic ของเราครับ
<link rel="stylesheet" href="css/framework7.material.min.css"> <link rel="stylesheet" href="css/framework7.material.colors.min.css"> <link rel="stylesheet" href="css/framework7-icons.css"> <script type="text/javascript" src="js/framework7.min.js"></script> <script type="text/javascript" src="js/main.js"></script>
– HTML ที่สำคัญของ Framework 7
<div data-page="startpage" class="page">
ทำไม่ div ที่มี attribute data-page ถึงสำคัญเนื่องจากตัวนี้จะเป็นเหมือน content เมื่อมีการเรียกหน้าอื่น html หน้าอื่นจะเข้ามาแทนที่ส่วนนี้ทั้งหมด พูดง่ายๆคือจุดที่มีการเปลี่ยน view และ ใช้เป็นตัวในการอ้างอิงการทำ control ขึ้นมาด้วย สังเกตุได้จาก ไฟล์ des.html ที่มีแค่ส่วน page เท่านั้นและผมตั้งชื่อว่า des
ที่นี้มาในส่วน js ที่ใช้ควบคุมและเรียก page ต่างๆ
main.js คือส่วนที่เป็น control ของโปรแกรมทั้งหมด
var webuniqueapp = new Framework7(); // สร้าง app ขึ้นมา
var $$ = Dom7;
var mainView = webuniqueapp.addView('.view-main',{ // add view เข้า class และใส่ config
cache:false,
modalTitle: 'WEB UNIQUE BLOG',
});
var urlpost = 'https://webunique.in.th/blog//wp-json/wp/v2/'; // ผมสร้างไว้เรียก url จะได้เปลี่ยนที่เดียว
initfeed();
// init event zone
webuniqueapp.onPageInit('startpage', function (page) { // ส่วนที่ผมบอกว่าต้องใช้ init page ที่มีการเรียก จะทำตาม logic ด้านในครับ อันนี้เป็ฯส่วน Startsite หรือ Index.html
initfeed();
});
webuniqueapp.onPageInit('des', function (page) { // ส่วนนี้เป็น logic control ของ des หรือ des.html ครับ
var datapost = [];
$$.get(urlpost+'posts/'+page.query.id, datapost, function (data) { // ่ajax เรียกข้อมูลขาม id ของ post
$$("#mytitle").html(data.title.rendered); // set title
$$("#mycontent").html(data.content.rendered); // set content
});
});
function initfeed(){ // function สำหรับเรียก feed จาก wp
var datapost = [];
$$.get(urlpost+'posts', datapost, function (data) { // ajax ไปที่ url
data = JSON.parse(data); // แปลง data เป็น json
var feedcontent = '';
$$.each( data, function( key, value ) { // loop object เพื่อนำไปแสดงผลใช้การต่อ string แบบบ้านๆเอาครับ
feedcontent +='<li>';
feedcontent +='<a href="des.html?id='+data[key].id+'" class="item-link item-content">';
feedcontent +='<div class="item-inner">';
feedcontent +='<div class="item-title-row">';
feedcontent +='<div class="item-title">'+data[key].title.rendered+'</div>';
feedcontent +='<div class="item-after"></div>';
feedcontent +='</div>';
feedcontent +='<div class="item-subtitle"></div>';
feedcontent +='<div class="item-text" ">'+data[key].excerpt.rendered+'</div>';
feedcontent +='</div>';
feedcontent +='</a>';
feedcontent +='</li>';
});
$$("#feedlist").html(feedcontent);
});
}
จริงๆยังมีอีกหลายอย่างที่ต้องอธิบายใน project นี้แต่เวลาเขียนอาจจะไม่พอรวมถึงการ bulid เป็น app ขึ้น store
ลองเอา source ไปศึกษาเพิ่มเติมได้ครับ
(ในการพัฒนาพวก hybrid app และใช้ ajax ถ้าทดสอบใน Browser จะเจอปัญหา ajax cross domain คือ ถ้าอยู่เว็บ a ไปเรียก ajax url จากเว็บ b ไม่ได้เป็น browser security ถ้าอยากทดสอบลองหา plugin หรือ addon ของ broswer ดู
ก็จะสามารถเรียกข้อมูลได้ chrome ผมใช้ https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi )
DOWNLOAD