ปุ่ม “Edit with Page Builder Sandwich” ไม่ปรากฏ

เขียนโดย

ใน

, ,

ปุ่ม “Edit with Page Builder Sandwich” ไม่แสดงขึ้นมา

หากคุณไม่เห็นปุ่ม “Edit with Page Builder Sandwich” ที่หน้าบ้านของเว็บไซต์ ต่อไปนี้คือสิ่งที่คุณสามารถลองตรวจสอบดูได้:

ตรวจสอบให้แน่ใจว่าแถบผู้ดูแลระบบของคุณแสดงอยู่

ปุ่มแก้ไขของ PB Sandwich จะมีให้ใช้งานในแถบผู้ดูแลระบบที่หน้าบ้านของคุณ ตรวจสอบให้แน่ใจว่าแถบผู้ดูแลระบบแสดงอยู่โดยไปที่การดูแลระบบของคุณ แล้วไปที่ Users > Your Profile และตรวจสอบอีกครั้งว่าได้ทำเครื่องหมายที่ช่อง Show Toolbar when viewing site แล้ว

e5960e581e file w9uN2EeCjm

ตรวจสอบให้แน่ใจว่าคุณอยู่ใน Page, Post หรือ Custom Post Type

เฉพาะ Posts, Pages & Custom Post Types เท่านั้นที่สามารถแก้ไขได้ที่หน้าบ้าน คุณจะแก้ไขสิ่งต่างๆ ที่หน้าบ้านได้ก็ต่อเมื่อคุณสามารถแก้ไขได้โดยใช้ตัวแก้ไขเนื้อหาของ WordPress ในหลังบ้าน พื้นที่อื่นๆ ของเว็บไซต์คุณ เช่น รายการบล็อกโพสต์ในหน้าแรก, รายการบล็อกโพสต์ทั้งหมด, หน้ารายการหมวดหมู่, หน้า 404, หน้าการค้นหา เป็นหน้าแบบไดนามิกที่สร้างโดย WordPress ร่วมกับธีมที่คุณใช้อยู่ และไม่สามารถแก้ไขได้โดยใช้ PB Sandwich

สิ่งหนึ่งที่บ่งบอกว่าหน้าเว็บปัจจุบันสามารถแก้ไขได้หรือไม่คือ หากคุณเห็น “Edit Post” หรือ “Edit Page” บนแถบผู้ดูแลระบบของคุณ

ตรวจสอบให้แน่ใจว่าเนื้อหาของคุณไม่ได้ถูกสร้างขึ้นแบบไดนามิกโดยธีมหรือปลั๊กอิน

หากหน้า/โพสต์ของคุณถูกสร้างขึ้นแบบไดนามิกโดยธีมหรือปลั๊กอิน หน้า/โพสต์นั้นจะไม่สามารถแก้ไขด้วย Page Builder Sandwich ได้ (และเป็นไปได้สูงว่าจะแก้ไขในตัวสร้างหน้าอื่นๆ ไม่ได้ด้วยเช่นกัน) หากคุณสังเกตเห็นว่าตัวแก้ไขเนื้อหาในหลังบ้านของคุณว่างเปล่า แต่เมื่อดูหน้าเว็บที่หน้าบ้านกลับมีเนื้อหาเต็มไปหมด นี่เป็นข้อบ่งชี้ที่ดีว่าหน้าของคุณถูกสร้างขึ้นแบบไดนามิก

หากต้องการตรวจสอบว่าหน้าของคุณถูกสร้างขึ้นแบบไดนามิกหรือไม่ ให้ดูซอร์สโค้ดของหน้าเว็บ (คลิกขวาแล้วเลือก “View Page Source”) ค้นหาข้อความ “pbs-main-wrapper” หากคุณไม่เห็นข้อความนั้น แสดงว่าหน้าเว็บของคุณถูกสร้างขึ้นแบบไดนามิก

ต่อไปนี้คือตัวอย่างบางส่วนของเนื้อหาที่สร้างขึ้นแบบไดนามิก:

  • หน้าของคุณประกอบด้วยวิดเจ็ตหลายตัวที่คุณเพิ่ม/แก้ไขโดยใช้ Customizer,
  • หน้าของคุณประกอบด้วยหน้าต่างๆ ที่นำมาต่อเข้าด้วยกันโดยธีมแบบ “one page” (ในกรณีนี้คุณยังคงสามารถแก้ไขแต่ละหน้าได้ แต่ไม่สามารถแก้ไขหน้าที่รวมกันได้) หรือ
  • หน้าของคุณประกอบด้วยบล็อกโพสต์ล่าสุด

ลองเพิ่มเนื้อหาบางส่วนดูก่อน

เคยมีกรณีที่ธีมไม่แสดงเนื้อหาเลยหากเนื้อหาว่างเปล่า และทำให้ PBS เข้าใจผิดว่าหน้านั้นไม่สามารถแก้ไขได้ ในการตรวจสอบว่าเป็นกรณีนี้หรือไม่ ให้แก้ไขหน้า/โพสต์ของคุณในตัวแก้ไขหลังบ้าน ลองเพิ่มข้อความใดๆ ลงในเนื้อหาของคุณ (ตัวอย่างเช่น “hello”) จากนั้นคลิกที่ปุ่ม “Edit with Page Builder Sandwich” จากตรงนั้น

ขอขอบคุณ Mathias Hellquist สำหรับคำแนะนำนี้!

ตรวจสอบให้แน่ใจว่าหน้าของคุณไม่ได้ถูกครอบครองโดย Page Builder อื่น

ตัวสร้างหน้าบางตัวจะให้คุณเลือกว่าจะใช้ตัวแก้ไขเนื้อหาเริ่มต้นของ WordPress หรือใช้ตัวแก้ไขของตัวสร้างหน้านั้นเอง หากคุณได้แก้ไขหน้าของคุณโดยใช้ตัวสร้างหน้าอื่นไปแล้ว เป็นไปได้ว่าตัวสร้างหน้านั้นอาจครอบครองเนื้อหาไปแล้ว และ hooks/filters ของเนื้อหาอื่นๆ จะไม่สามารถทำงานได้อีก ด้วยเหตุนี้ บางครั้ง Page Builder Sandwich จึงไม่สามารถตรวจจับได้ว่าเนื้อหาของคุณอยู่ที่ไหน และจะไม่แสดงปุ่มแก้ไขเนื่องจากไม่มีอะไรให้แก้ไข

ในการแก้ไขปัญหานี้ เพียงเลือกที่จะไม่ใช้ตัวสร้างหน้านั้นสำหรับหน้า/โพสต์นั้นๆ และเลือกใช้เพียงตัวแก้ไขเนื้อหาเริ่มต้นของ WordPress

ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ในการแก้ไขหน้านั้น

ปุ่มแก้ไขจะไม่ปรากฏหากคุณไม่สามารถแก้ไขหน้านั้นได้ ตัวอย่างเช่น หากคุณเป็นผู้แก้ไข (Editor) หรือผู้ร่วมเขียน (Contributor) และคุณสามารถเขียนบล็อกโพสต์และบทความในเว็บไซต์ได้ นั่นไม่ได้หมายความว่าคุณจะสามารถแก้ไขหน้าแรกหรือหน้าติดต่อเราได้ หากคุณเห็นปุ่ม “Edit Post” บนแถบผู้ดูแลระบบของคุณ คุณก็น่าจะสามารถแก้ไขได้โดยใช้ PB Sandwich เช่นกัน โปรดติดต่อผู้ดูแลเว็บไซต์ของคุณเพื่อขอสิทธิ์การแก้ไขหากจำเป็น

อาจมีข้อผิดพลาด Javascript ที่ขัดขวางไม่ให้ PB Sandwich ทำงาน

PB Sandwich มีการใช้งาน Javascript อย่างมาก หากมีข้อผิดพลาด Javascript ที่มาจากสคริปต์อื่นๆ ในเว็บไซต์ของคุณ สิ่งนี้อาจทำให้ PB Sandwich ใช้งานไม่ได้ ในการตรวจสอบว่าเป็นกรณีนี้หรือไม่ คุณสามารถเปิดคอนโซลนักพัฒนา (developer console) ในเบราว์เซอร์ของคุณเพื่อตรวจสอบข้อผิดพลาดได้ 

ขอแนะนำให้ใช้ Chrome สำหรับขั้นตอนนี้ คลิกขวาที่ส่วนใดก็ได้ในหน้าเว็บ จากนั้นคลิกที่ตัวเลือก “Inspect” การดำเนินการนี้จะเปิดหน้าต่างใหม่ขึ้นมาที่ด้านล่างของเบราว์เซอร์ของคุณ ให้คลิกที่แท็บ “console” หากคุณมีข้อผิดพลาด คุณควรจะเห็นข้อความในลักษณะนี้:

4acce143a3 file

หากคุณมีข้อผิดพลาด คุณยังสามารถดูเบาะแสได้ว่าสิ่งนี้มาจากไหนโดยการคลิกหรือเลื่อนเมาส์ไปวางเหนือชื่อสคริปต์:

abb5a87c67 file ITjVcdhZQU

ข้อผิดพลาดเหล่านี้อาจมาจากธีมของคุณหรือปลั๊กอินอื่นๆ ที่คุณอาจมี การแก้ไขข้อผิดพลาดเหล่านั้นจะช่วยให้ PB Sandwich กลับมาทำงานได้อีกครั้ง

หากธีมหรือปลั๊กอินตัวใดตัวหนึ่งของคุณทำให้เกิดข้อผิดพลาด Javascript โปรดแจ้งให้เราทราบทางอีเมลที่  [email protected] และเราจะพยายามอย่างเต็มที่เพื่อแก้ไขปัญหาให้คุณ 🙂

หากคุณใช้งาน CloudFlare ตรวจสอบให้แน่ใจว่าได้ปิด Rocket Loader แล้ว

CloudFlare เป็น DNS CDN ฟรีที่นิยมใช้งานกันอย่างแพร่หลาย เป็นบริการที่ยอดเยี่ยม แต่ปัจจุบัน PBS มีปัญหาเมื่อพูดถึงฟีเจอร์ Rocket Loader โดย Rocket Loader จะช่วยเพิ่มความเร็วในการโหลดไฟล์ Javascript แต่จะทำให้ลำดับการเรียกใช้งานและการพึ่งพาของสคริปต์ PBS ผิดเพี้ยนไป หากคุณเปิด Rocket Loader ไว้ ปุ่มแก้ไขสำหรับ Page Builder Sandwich จะไม่แสดงขึ้นมา (และไม่มีข้อผิดพลาด Javascript ใดๆ แสดงในคอนโซล)

หากต้องการตรวจสอบว่าเว็บไซต์ของคุณใช้ CloudFlare Rocket Loader หรือไม่ ให้ดูซอร์สโค้ดของหน้าเว็บ (คลิกขวาแล้วเลือก “View Page Source”) จากนั้นค้นหาข้อความ “rocketscript” หากคุณพบข้อความดังกล่าว แสดงว่าคุณเปิด Rocket Loader ไว้อยู่

e4dff5b8c0 file tPnWvP09FF

อ่านบทความเกี่ยวกับ  ความเข้ากันได้ของ CloudFlare & Rocket Loader สำหรับคำแนะนำแบบละเอียดเกี่ยวกับวิธีการปิดใช้งาน


ฉันทำตามขั้นตอนทั้งหมดนั้นแล้ว แต่ปุ่มแก้ไขก็ยังคงไม่แสดง!

เอาล่ะ ถึงตรงนี้ หากไม่มีวิธีแก้ไขปัญหาใดข้างต้นได้ผล อาจถึงเวลาที่จะต้องอธิบายว่า ทำไม ปุ่มถึงไม่แสดง และควรทำอย่างไรกับปัญหานี้ พร้อมหรือยัง? ลุยกันเลย!

“ทำไม” (ในแง่ที่ไม่ใช่เชิงเทคนิค)

Page Builder Sandwich จำเป็นต้องรู้ว่าเนื้อหาของหน้า/โพสต์ของคุณอยู่ที่ไหน เราทำสิ่งนี้โดยการคอยตรวจจับเมื่อ WordPress โหลดเนื้อหาของโพสต์และ “ทำเครื่องหมาย” ในบริเวณนั้นไว้ เพื่อที่ว่าเมื่อทุกอย่างโหลดเสร็จแล้ว เราจะสามารถค้นหาได้ว่าเนื้อหาสำคัญอยู่ที่ไหน

ในบางครั้ง ปลั๊กอินบางตัวอาจเขียนทับหรือข้ามขั้นตอนนี้ และพยายามโหลดเนื้อหาด้วยวิธีของตนเองแทน บางครั้งสิ่งนี้ก็ไม่มีปัญหา แต่ในบางสถานการณ์ โดยเฉพาะอย่างยิ่งเมื่อเกี่ยวข้องกับการโหลดเนื้อหาหลักของโพสต์ สิ่งนี้อาจทำให้ปลั๊กอินบางตัวหยุดทำงานได้ เมื่อมีปลั๊กอินอื่นข้ามกระบวนการโหลดนี้ “เครื่องหมาย” ที่เราทำไว้อาจสูญหายไป และเมื่อถึงเวลาที่ตัวแก้ไขต้องทำงาน มันจะไม่สามารถค้นหาตำแหน่งเนื้อหาของคุณได้อีกต่อไป ดังนั้น ปุ่มแก้ไขจึงไม่แสดงขึ้นมา! คุณอาจพบว่าปลั๊กอินบางตัวที่เพิ่มเนื้อหาลงในหน้าของคุณ เช่น ปลั๊กอินแชร์ไปยังโซเชียล อาจหยุดทำงานเนื่องจากสาเหตุเดียวกันนี้ได้เช่นกัน

“ทำไม” (ในเชิงเทคนิค)

Page Builder Sandwich จำเป็นต้อง  รู้ ว่าเนื้อหาของหน้า/โพสต์ของคุณอยู่ที่ไหน และทำสิ่งนี้โดยการ hook เข้ากับตัวกรอง the_content และเพิ่ม wrapper ครอบเนื้อหาหลักของคุณ ปลั๊กอินบางตัวอาจแทนที่สิ่งนี้และเขียนทับเนื้อหาด้วยฟังก์ชัน get_the_content() ในขั้นตอนต่อไปแทน น่าเสียดายที่การทำเช่นนี้จะป้องกันไม่ให้ตัวกรอง the_content ทั้งหมดถูกเรียกใช้งาน และทำให้ wrapper ของ PBS สูญหายไป การเปลี่ยนแปลงของปลั๊กอินอื่นๆ ก็จะสูญหายไปด้วยเช่นกัน

ไม่มีอะไรผิดกับการใช้ get_the_content() โดยตัวมันเอง แต่ก็อาจมีผลกระทบตามมาหากนำไปใช้ในการสืบค้นหลัก (main query) และภายในหน้าเทมเพลตโพสต์เดี่ยว แทนการเรียกใช้ the_content() ตามปกติซึ่งตัวกรอง the_content ทั้งหมดจะทำงาน

สิ่งที่ควรทำเกี่ยวกับเรื่องนี้

คุณสามารถตรวจสอบว่า “เครื่องหมาย” ของ Page Builder Sandwich ไม่ปรากฏอยู่หรือไม่ โดยไปที่หน้า/โพสต์ของคุณที่หน้าบ้านและดูซอร์สโค้ดของหน้า ในขณะที่เข้าสู่ระบบอยู่ ค้นหาดูในโค้ดว่าคุณพบข้อความนี้หรือไม่:

data-name="main-content"

หากคุณพบข้อความนี้ แสดงว่าอาจเป็นเพียงปัญหา Javascript ที่ใดที่หนึ่ง เพียงแจ้งให้เราทราบเกี่ยวกับธีมและปลั๊กอินที่คุณใช้งานอยู่ และเราสามารถแก้ไขปัญหานั้นได้

แต่หากคุณไม่พบข้อความนี้ อาจเป็นไปได้ว่าธีมของคุณ (หรือปลั๊กอิน แต่มักจะเป็นธีมหากเป็นหน้าเพจหรือบล็อกโพสต์) กำลังทำอะไรบางอย่างกับเนื้อหาของโพสต์ หากเป็นกรณีนี้ คุณควรติดต่อนักพัฒนาธีมและแจ้งให้พวกเขาทราบเกี่ยวกับปัญหานี้! คุณยังสามารถแสดงคำอธิบาย “ทำไม” ในเชิงเทคนิคด้านบนให้พวกเขาดูได้ ซึ่งจะช่วยในการแก้ไขข้อบกพร่อง (debug) ได้ 🙂

หากคุณมั่นใจในการแก้ไข PHP คุณสามารถลองแก้ไขได้โดยค้นหาไฟล์เทมเพลตที่จัดการเนื้อหาของโพสต์ วิธีแก้ปัญหาหนึ่งที่เราพบคือการแทนที่การเรียกใช้:

$content = get_the_content();

ด้วย:

ob_start();
the_content();
$content = ob_get_clean();<br>

หมายเหตุ: ตัวแปร PHP อาจแตกต่างกันไปในไฟล์ของคุณ แต่แนวคิดควรจะเหมือนกัน หากวิธีนี้ใช้ได้ผล จะเป็นการดีกว่าเช่นกันหากคุณสร้าง child theme ขึ้นมาแทนที่จะนำการเปลี่ยนแปลงนี้ไปใช้ในธีมของคุณโดยตรง นอกจากนี้อาจมีผลข้างเคียงจากการเปลี่ยนแปลงนี้ ดังนั้นจึงเป็นการดีกว่าหากคุณปรึกษากับนักพัฒนาธีมของคุณเกี่ยวกับเรื่องนี้