WordPress ทำหน้าอินโทรก่อนเข้าเว็บ

โดยปกติที่ระบบจะสามารถกำหนดได้อยู่แล้วว่าเราจะให้หน้าไหนขึ้นเป็นหน้าแรกก่อน

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

แล้วถ้าอยากทำหน้าเว็บ html เอง หรือที่เรียกว่า Landing Page ล่ะ จะทำอย่างไร?

ที่จริงก็ไม่ยากอะไร ให้เราเตรียมหรืออกแบบหน้าเว็บไว้ ทำลิงค์ส่งไปยัง index.php โดยตั้งชื่อไว้ว่า index.html แต่งหน้าเว็บเรียบร้อยแล้วก็อัปโหลดขึ้นไปที่เว็บที่เดียวกับ index.php ของ wordpress เลย

จากนั้นเราจะพบว่าเวลาเข้าเว็บ เราจะเจอหน้าอินโทรนี้ก่อนทุกที แต่พอกดไปที่ index.php หรือลิงค์ที่เราโยงไปที่หน้าแรกของ wordpress จะพบว่ามันไม่ยอมไป มันจะรีไดเร็คกลับมาที่ index.html คืน

แล้วจะแก้ไขปัญหานี้ได้อย่างไร?

อ้างอิง track ของ wordpress เลยล่ะกัน

#http://core.trac.wordpress.org/changeset/9203

ให้เราเปิดไฟล์ #wp-includes/canonical.php

แล้วหาบรรทัดที่ 304 หรืออาจจะบรรทัดอื่นน่ะครับ ผมใช้เวอร์ชั่น 3.3.1

$redirect['path'] = preg_replace(‘|/index.php/*?$|’, ‘/’, $redirect['path']);

แล้วแก้เป็น

$redirect['path'] = preg_replace(‘|/index.php/$|’, ‘/’, $redirect['path']);

แล้วก็บันทึกแล้วลองเข้าหน้าเว็บดูครับ ใช้งานได้แน่นอน

Don't be shellfish...Share on FacebookTweet about this on TwitterShare on Google+Digg thisPin on PinterestShare on Reddit

3 Responses so far.

  1. pui พูดว่า:

    ใช้ version WordPress 3.1.4. แก้แล้วใช้งานไม่ได้ ช่วยหน่อยค่ะ

  2. amdev พูดว่า:

    ผมทดสอบกับตัวล่าสุด 3.4.1 ก็ใช้งานได้น่ะครับ โค้ดมันอยู่ที่บรรทัด 325

    ระวังเครื่องหมาย ‘ น่ะครับ ถ้าก็อปปี้จากบทความผม มันจะเป็น ‘ ซึ่งผิดหลักของ php

    $redirect['path'] = preg_replace(‘|/index.php/$|’, ‘/’, $redirect['path']);

    ให้แก้เป็น

    $redirect['path'] = preg_replace('|/index.php/$|', '/', $redirect['path']);

  3. โอ พูดว่า:

    หาวิธีนี้อยู่พอดี Content มีประโยชน์มากครับ

    ขอบคุณครับ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *

คุณอาจจะใช้ป้ายกำกับและคุณสมบัติHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>