การเพิ่ม rewrite rule ใน wordpress
เราจะเพิ่มเติม rewrite rule กรณีที่ต้องการให้ page บางเพจ สามารถรองรับการส่งค่าตัวแปรผ่าน QueryString
ดังตัวอย่างนี้
สมมติว่าเราสร้าง Page => gallery ขึ้นมาและมี URL เป็น http://www.codeans.com/gallery โดยหน้านี้จะมีการแสดงผลรูปในแกลลอรี่ทั้งหมด
แต่ถ้าเราต้องการให้หน้านี้แสดงรูปในแกลเลอรี่แยกตามเดือน เราจะต้องทำการส่งค่า เดือน(และปี) ตามไปด้วย
โดย URL ที่เราต้องการส่งค่าจะเป็น http://www.codeans.com/gallery/date/2011/10
วิธีการทำก็คือ
- ไปที่ไฟล์ functions.php ของ theme หลัก
- ทำการเพิ่มเติม Rewrite rule ตามนี้
// ************* Custom gallery archive
add_filter( 'rewrite_rules_array','my_insert_rewrite_rules' );
add_filter( 'query_vars','my_insert_query_vars' );
add_action( 'wp_loaded','my_flush_rules' );
// flush_rules() if our rules are not yet included
function my_flush_rules(){
$rules = get_option( 'rewrite_rules' );
if ( ! isset( $rules['(gallery)/date/([0-9]{4})/([0-9]{1,2})/?$'] ) ) {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
// Adding a new rule
function my_insert_rewrite_rules( $rules )
{
$newrules = array();
//$newrules['(project)/(\d*)$'] = 'index.php?pagename=$matches[1]&id=$matches[2]';
$newrules['(gallery)/date/([0-9]{4})/([0-9]{1,2})/?$'] = 'index.php?pagename=$matches[1]&year=$matches[2]&monthnum=$matches[3]';
return $newrules + $rules;
}
// Adding the id var so that WP recognizes it
function my_insert_query_vars( $vars )
{
array_push($vars, 'id');
return $vars;
}
- หลังจากนั้น เราจะมาตรวจสอบดูว่า Rewrite rule ที่เพิ่มทำงานได้จริงหรือป่าว โดยใส่ code ด้านล่าง ในไฟล์ header.php ของ theme
print get_query_var("pagename");
print get_query_var("year");
print get_query_var("monthnum");
- ลองเรียก http://www.codeans.com/gallery/date/2011/10 ดูจะปรากฎค่าตัวแปร ที่เราต้องการ
ติดขัดตรงไหน ฝากข้อความในเว็บบอร์ด(ฟอรัม) ได้เลยครับ
ปกติแล้วการเขียนโปรแกรมส่งเมล สามารถส่งได้ง่าย ๆ สบาย ๆ ปิดตาเขียนก็ส่งได้แล้ว

