Posts tagged wordpress

ปิดระบบ Revision ใน WordPress

1

แก้ wp-config.php เติมลงไปว่า

define ('WP_POST_REVISIONS', 0);

ไปที่ db ของ WordPress แล้วรัน SQL ต่อไปนี้

DELETE FROM wp_posts WHERE post_type='revision'

ป.ล. ชื่อ table (wp_posts) อาจแตกต่างกันไป แล้วแต่ prefix ที่ตั้งค่าไว้

 

WordPress Bug: auto upgrade plugin ทำปลั๊กอินพัง

2

หลังจาก @lewcpe ช่วยลง FTP บนเครื่องที่ภาคให้แล้ว ก็ได้โอกาสลองใช้ฟีเจอร์สั่ง Auto-upgrade ของ wordpress ฟีเจอร์นี้คือการที่ wordpress จะทำการ upgrade ตัว plugin ให้เราโดยอัตโนมัติ เพียงแค่เรากรอก user/pass ของ FTP เข้าไปแล้ว WordPress จะเข้าไปจัดการให้เราเอง

 Wordpress Auto-Upgrade
ตัวอย่างหน้า Upgrade

เมื่อระบบพร้อม เราก็ทดลองกับ wassup plugin เป็นตัวแรก ทุกอย่างก็ผ่านไปด้วยดี จนกระทั่งขั้นตอนการอัพเกรดเสร็จเรียบร้อย แต่เมื่อกดไปหน้าไหนก็จะเจอข้อความโวยวายดังนี้อยู่บนหัว

Warning: include_once(…blabla…/blog/wp-content/plugins/wassup/) [function.include-once]: failed to open stream: Success in …blabla…/blog/wp-settings.php on line 425

จากข้อความข้างบน แปลว่ามีปัญหากับคำสั่ง include_once ในไฟล์ wp-settings.php บรรทัดที่ 425

เอาแล้วไง! ก็เริ่ม debug หาสาเหตุไปเรื่อยๆ จนพบว่ามันเกิดจากตัวแปร $plugin ที่ปกติต้องชี้ไปยังไฟล์ มันดันขึ้นเป็นโฟลเดอร์ แต่เจ้า include_once นั้นออกแบบมาให้อ่านไฟล์ มันก็เลยโวยวายออกมา

เรื่องที่ตัวแปร $plugin มี directory path โผล่มานี่ช่างมันเพราะขี้เกียจหา ประเด็นคือทำไม php มันยังรัน include_once ทั้งๆที่ก่อนหน้านั้นก็มี if คอยตรวจสอบตัวแปร $plugin อยู่ตั้งหลายเงื่อนไข ลองดูโค้ด

424
425
if (  != $plugin && 0 == validate_file($plugin) && file_exists(WP_PLUGIN_DIR . '/' . $plugin) )
    include_once(WP_PLUGIN_DIR . '/' . $plugin);

ถึงได้พบว่าปัญหาอยู่ตรงเงื่อนไขหลังสุด file_exists(path) เนื่องจากคำสั่งนี้จะ return TRUE ไม่ว่า path ที่ใส่มาจะเป็น file หรือ directory ก็ตาม ทำให้ค่า $plugin ที่ถูกส่งมาในสภาพ directory นั้นผ่านเงื่อนไขนี้ไปได้ แล้วไปรันต่อใน include_once บรรทัดถัดมา

อันนี้แก้ไม่ยาก แค่เปลี่ยนไปใช้คำสั่ง is_file(path) แทนก็จบ เพราะคำสั่งนี้ทั้งตรวจสอบว่า path ที่ส่งให้คือ file หรือเปล่า โค้ดใหม่ก็จะเป็น

424
425
if (  != $plugin && 0 == validate_file($plugin) && is_file(WP_PLUGIN_DIR . '/' . $plugin) )
    include_once(WP_PLUGIN_DIR . '/' . $plugin);

เพียงเท่านี้! ข้อความ Warning มากมายก็จะอันตรธานหายไป

ทีนี้เมื่อเราแก้ได้แล้วจะเก็บไว้คนเดียวก็ยังไงๆอยู่ ก็เลยตัดสินใจรายงานบั๊กไปยังทางทีมงาน WordPress เนี่ยแหละปัญหา หลังจากอ่านขั้นตอนการ Report Bugs แล้ว ก็เริ่มถอดใจ

ตอนแรกเกือบจะเปลี่ยนใจไม่แจ้งแล้ว แต่ลองไปค้นหาบั๊กเก่าๆดู ถึงได้พบว่ามีคนเจอปัญหาเดียวกันเมื่อสัปดาห์ที่แล้วนี่เอง แล้วเค้าก็เขียน Patch ไว้ให้เรียบร้อยแล้ว เป็นอันว่าคงแก้ไขในรุ่นที่จะถึงใกล้ๆนี้

Bug reported
Report Bug

wps.diff
Patch ที่มีคนส่งมาให้

ว่าแล้วก็มาอัพบล๊อกเก็บเป็นข้อมูลไว้ ถ้ามันยังไม่แก้ในรุ่นใกล้ๆ เผื่อเราลงใหม่จะได้รู้ว่าต้องแก้ไปตรงไหนบ้าง

 

เขียน Blog ไม่ต้องพึ่ง Browser ด้วย Windows Live Writer

3

ด้วยความที่อินเตอร์เน็ทบ้านผมมักจะมีปัญหาบ่อยๆตอนฝนตก ทำให้ไม่ค่อยสะดวกกับการเขียน Blog ผ่าน Web Browser เท่าไรนัก แรกๆผมแก้ปัญหาด้วยการเขียนใส่ Wordpad และเซฟไว้ แต่ก็ไม่สามารถสนองความต้องการได้เพียงพอ ผมเลยลองมองหาโปรแกรมที่สามารถเขียน Blog ได้โดยไม่ต้องพึ่ง Web Browser ซึ่งก็มีคนแนะนำ Windows Live Writer มาให้ผม

Windows Live Writer (WLW) เป็นโปรแกรมฟรีในชุด Windows Live จากทาง Microsoft เป็นโปรแกรมเฉพาะทางสำหรับเขียน Blog จากใน Windows ได้โดยไม่ต้องเปิด Web Browser

แม้ว่าจะเป็นโปรแกรมจากทาง Microsoft ก็ใช่ว่าจะเขียนได้เฉพาะ Windows Live Spaces เท่านั้น มันสามารถใช้ได้กับผู้ให้บริการ Blog ดังๆสารพัดชนิด เช่น WordPress, Blogger, TypePad, LiveJournal, Movable Type และ Blog ทุกๆประเภทที่รองรับ XML RSD

สำหรับคนที่อยากลองใช้ สามารถดาวน์โหลดได้จากเว็บไซต์ของ Windows Live Writer เลยครับ แต่บางคนอาจมีปัญหาไม่สามารถดาวน์โหลดได้ เนื่องจากไม่อยู่ในพื้นที่ที่ Microsoft ให้สิทธิเข้าร่วมทดสอบ (มันยังเป็น Beta อยู่น่ะ) ก็สามารถดาวน์โหลดได้จากลิ้งนี้แทนครับ

เมื่อเปิดโปรแกรมครั้งแรก โปรแกรมจะให้เรา Add Blog Account แล้วก็จะทำการดาวน์โหลดโครงสร้างและ Stylesheet ต่างๆมาเก็บไว้ เมื่อเสร็จเรียบร้อยก็สามารถเขียนได้ทันที

ลูกเล่นที่ผมชอบมากๆสำหรับโปรแกรมนี้คือโหมดแสดงผลที่หลากหลาย โหมดแรกคือโหมดการเขียนแบบ Web Layout ที่สามารถเขียน Blog ด้วยธีมเดียวกับของจริง โดยการจัดรูปแบบที่ฟ้อนต์ ขนาดฟ้อนต์ และความกว้างบรรทัด ที่เสมือนจริงขณะที่เขียน ซึ่งใช้รูปแบบจากโครงสร้างที่ดาวน์โหลดมาในตอนแรก ดังตัวอย่างในรูปข้างล่างนี้

Web Layout

อีกโหมดหนึ่งคือ Web Preview ซึ่งในโหมดนี้จะไม่สามารถเขียนเนื้อหาได้ โดยโปรแกรมจะนำเนื้อหาที่เราเขียนไปแปะลงใน Template ที่โปรแกรมสร้างขึ้นมาจากการดาวน์โหลดโครงสร้างในตอนแรก ผลที่ได้คือหน้า Blog เหมือนในเว็บอย่างกับแกะ แต่จะเป็นเนื้อหาใหม่ที่เรากำลังเขียนแทน ซึ่งช่วยให้ไม่ต้องมา Preview และแก้ไขหลายๆครั้ง

Web Preview Mode

เมื่อเราเขียนเสร็จแล้ว ก็สามารถ Publish ได้อย่างง่ายดาย เพียงแค่กดปุ่ม Publish เท่านั้น Blog ก็จะถูกส่งขึ้นเว็บและแสดงผลในทันที หรือถ้ายังเขียนไม่เสร็จแล้วตั้งใจมาเขียนต่อทีหลัง ก็สามารถ Save Draft ไว้ได้ โดยสามารถเลือกที่จะเซฟในเครื่องหรือเซฟบนเว็บก็ได้

นอกจากนั้นแล้ว โปรแกรมนี้สามารถติดตั้ง Plugin ได้เพื่อเพิ่มความสามารถต่างๆให้กับโปรแกรมได้อย่างมาก โดยสามารถดาวน์โหลดได้จาก Plugins Download ครับ

ป.ล. Blog นี้เขียนด้วยโปรแกรม Windows Live Writer ครับ (ยิ้ม)

OpenID มาตรฐานการ Login แห่งอนาคต

5

หลายๆคนคงเคยประสบปัญหาที่ต้องจำ Username/Password ของเว็บไซต์ต่างๆไว้เป็นจำนวนมาก ซึ่งอาจจะลืมกันอยู่บ่อยๆ ทำให้ต้องหาที่จดหรือใช้โปรแกรมช่วยจำกันเลยก็มี คงจะดีไม่น้อยถ้าเราสามารถใช้ Identity เพียงอันเดียวเพื่อทำการ Login เว็บไหนก็ได้โดยไม่ต้องมานั่งกรอกข้อมูลใหม่ทุกเว็บ

OpenID เป็นระบบการ Login ที่ใช้ ID เดียวกันได้ทุกเว็บ ช่วยให้ไม่ต้องมานั่งจำข้อมูลการ Login แบบเดิมๆ เช่น Username/Password ซึ่งเป็นต้นเหตุของปัญหาความปลอดภัยที่เกิดจากการใช้รหัสเดียวกันหลายๆเว็บ หรือเกิิดจากการจดรหัสผ่านไว้ในสื่อที่ไม่ปลอดภัยพอจนทำให้เกิดปัญหาต่างๆนาๆ

การทำงานของ OpenID นั้นเรียบง่ายมาก โดย ID จะเป็นเพียง URL ธรรมดาๆอันหนึ่ง การ Login นั้นทำได้ง่ายดายเพียงกรอก URL นั้นลงในช่อง OpenID Login เว็บไซต์นั้นก็จะ Redirect คุณไปยัง OpenID Provider ตาม ID ของคุณหลังจากนั้น Provider จะทำการตรวจสอบและยืนยันตัวตนของคุณ (จะด้วยการ Login หรือ Cookie ก็ตามแต่) แล้วจึง Redirect คุณกลับมายังเว็บไซต์ในตอนแรก พร้อมกับข้อมูลยืนยันตัวตน

ในช่วงแรกๆ OpenID ยังไม่ค่อยได้รับความนิยม เนื่องจากยังไม่มีระบบหรือ CMS ที่สนับสนุนมากนัก ต่างกับทุกวันนี้ ซึ่งมีเว็บจำนวนมากที่สนับสนุน OpenID โดยเฉพาะ CMS ชื่อดังอย่างเช่น Drupal หรือ WordPress ต่างก็มีปลั๊กอิน OpenID ให้ใช้กันทั้งนั้น โดยเฉพาะ Drupal ที่ประกาศสนับสนุน OpenID อย่างเป็นทางการสำหรับ Drupal 6 ที่จะออกรุ่นจริงเร็วๆนี้ จากการสนับสนุนของเว็บไซต์หรือ CMS ใหญ่ๆข้างบน ทำให้เริ่มเห็นอนาคตได้แล้วว่า OpenID กำลังจะเป็นมาตรฐานการ Login ที่ได้รับความนิยมอย่างแพร่หลายในไม่ช้า

เว็บมาสเตอร์ที่ใช้ Drupal หรือ WordPress และอยากให้เว็บตัวเองสนับสนุน OpenID ก็สามารถทำได้ไม่ยาก โดยสำหรับ Drupal ก็เพียงโหลด OpenID Module มาติดตั้ง หรือจะรอ Drupal 6 เลยก็ได้ ส่วน WordPress นั้นทำได้โดยการติดตั้งปลั๊กอิน WP-OpenID+ ก็จะใช้ได้ทันที

สำหรับ WordPress นั้น พิเศษตรงที่สามารถทำให้ Blog คุณเป็น OpenID Server ได้ด้วย (เอาไป Login ที่อื่นได้) เพียงแค่ติดตั้งปลั๊กอิน OpenID Provider for WordPress MU ก็เป็นอันเสร็จสิ้นครับ

สำหรับผู้ที่อยากได้ OpenID สามารถสมัครได้ตามผู้ให้บริการ OpenID ต่างๆ สำหรับผมนั้นผมใช้ของ MyOpenID แต่ถ้าอยากให้ของอันอื่นก็สามารถเลือกใช้ได้จากรายชื่อนี้ครับ

ข้อมูลเพิ่มเติม [1] [2] [3] [4]

Technorati Tags: ,

Pangya Smileys ปลั๊กอินอีโมปังย่าสำหรับ WordPress

5

เนื่องจากอีโมดั้งเดิมของ WordPress มันไม่ถูกใจผมเอามากๆ บวกกับความที่ผมชอบอีโมปังย่าเป็นพิเศษ ก็เลยเขียน Plugin ขึ้นมาใหม่เพื่อให้ใช้อีโมปังย่าได้

ดาวน์โหลด (ยิ้ม)

มีให้เลือกสองแบบครับ ก็คือแบบ Zip กับ BZip2 อ้อ ต้องใช้ WordPress 2.2 ขึ้นไปนะครับ

วิธีติดตั้ง (เท่)

1. Extract ลงโฟลเดอร์ที่ติดตั้ง WordPress
2. เข้าหน้า Admin ไปที่ Plugins แล้วกด Activate ตรง Pangya smileys
3. ถ้ายังไม่ได้เปิดระบบ Emoticon ให้ไปเปิดได้ที่ Options > Writing > Convert emoticons… ครับ

วิธีการใช้ (สุดๆ)

เรียกใช้เหมือนอีโมปกติใน WordPress ครับ – ก็พิมพ์ชื่อมันลงไปเนี่ยแหละ

สำหรับชุดอีโมปังย่า ผมตั้งชื่อในรูปแบบ เปิดวงเล็บ-ชื่อ-ปิดวงเล็บ รายชื่ออีโมก็ดูจากข้างล่างได้เลยครับ อย่าลืมเอาเว้นวรรคออกด้วยล่ะ

(more…)

Go to Top