Nút “Edit with Page Builder Sandwich” không xuất hiện
Nếu bạn không thấy nút “Edit with Page Builder Sandwich” ở giao diện ngoài (frontend) trang web của mình, dưới đây là một vài cách bạn có thể thử:
Đảm bảo thanh quản trị của bạn đang hiển thị
Nút chỉnh sửa cho PB Sandwich có sẵn trên thanh quản trị ở frontend của bạn. Hãy đảm bảo thanh quản trị được hiển thị bằng cách truy cập vào trang quản trị của bạn và điều hướng đến Users > Your Profile và kiểm tra kỹ xem tùy chọn Show Toolbar when viewing site đã được đánh dấu hay chưa.

Đảm bảo bạn đang ở Trang, Bài viết hoặc Custom Post Type
Chỉ có Bài viết, Trang & Custom Post Type mới có thể chỉnh sửa được ở Frontend. Bạn chỉ có thể chỉnh sửa nội dung ở frontend nếu bạn có thể chỉnh sửa chúng bằng trình chỉnh sửa nội dung của WordPress trong backend. Các khu vực khác trên trang web của bạn – ví dụ: danh sách bài viết blog ở trang chủ, danh sách tất cả bài viết blog, danh mục lưu trữ, trang 404, trang tìm kiếm – là các trang động do WordPress cùng giao diện bạn đang sử dụng tạo ra và không thể chỉnh sửa bằng PB Sandwich.
Một dấu hiệu để nhận biết trang web hiện tại có chỉnh sửa được hay không là bạn có thấy nút “Edit Post” hoặc “Edit Page” trên thanh quản trị của mình hay không.
Đảm bảo nội dung của bạn không được tạo động bởi Giao diện hoặc Plugin
Nếu trang/bài viết của bạn được tạo động bởi giao diện hoặc plugin, trang đó sẽ không thể chỉnh sửa được bằng Page Builder Sandwich (và rất có thể là cả các trình tạo trang khác). Nếu bạn nhận thấy trình chỉnh sửa nội dung trong backend trống rỗng, nhưng khi xem trang ở frontend lại đầy ắp nội dung, thì đây là một dấu hiệu rõ ràng cho thấy trang của bạn được tạo động.
Để kiểm tra xem trang của bạn có được tạo động hay không, hãy xem mã nguồn trang web của bạn (nhấp chuột phải rồi chọn “Xem nguồn trang”). Tìm kiếm cụm từ “pbs-main-wrapper”, nếu bạn không thấy cụm từ đó ở bất cứ đâu, trang của bạn đã được tạo động.
Dưới đây là một vài ví dụ về nội dung được tạo động:
- Trang của bạn được tạo thành từ nhiều widget mà bạn thêm/chỉnh sửa bằng Tùy biến (Customizer),
- Trang của bạn được ghép từ nhiều trang khác nhau bởi một giao diện “one page” (trong trường hợp này bạn vẫn có thể chỉnh sửa từng trang riêng lẻ, nhưng không thể chỉnh sửa trang đã ghép), hoặc
- Trang của bạn được tạo từ các bài viết blog mới nhất.
Hãy thử thêm nội dung trước
Đã có những trường hợp giao diện hoàn toàn không hiển thị nội dung nếu nội dung đó trống, và điều này khiến PBS hiểu nhầm rằng trang không thể chỉnh sửa. Để kiểm tra xem có phải rơi vào trường hợp này không, hãy chỉnh sửa trang/bài viết của bạn trong trình chỉnh sửa backend, thử thêm bất kỳ đoạn văn bản nào vào nội dung (ví dụ: “hello”), sau đó nhấp vào nút “Edit with Page Builder Sandwich” từ đó.
Cảm ơn Mathias Hellquist về mẹo này!
Đảm bảo trang của bạn không bị “chiếm quyền” bởi một trình tạo trang khác
Một số trình tạo trang bắt bạn chọn sử dụng trình chỉnh sửa nội dung mặc định của WordPress hoặc trình chỉnh sửa riêng của chính trình tạo trang đó. Nếu bạn đã chỉnh sửa trang của mình bằng một trình tạo trang khác, có thể trình tạo trang đó đã “chiếm giữ” nội dung, và các hook/filter nội dung khác không thể hoạt động được nữa. Do đó, đôi khi Page Builder Sandwich sẽ không thể nhận diện được nội dung của bạn ở đâu và sẽ không hiển thị nút chỉnh sửa vì không có gì để chỉnh sửa.
Để khắc phục điều này, bạn chỉ cần chọn không sử dụng trình tạo trang đó cho trang/bài viết cụ thể đó, và chọn chỉ sử dụng trình chỉnh sửa nội dung mặc định của WordPress.
Đảm bảo bạn có quyền chỉnh sửa trên trang
Nút chỉnh sửa sẽ không xuất hiện nếu bạn không có quyền chỉnh sửa trang. Ví dụ: nếu bạn là biên tập viên (editor) hoặc cộng tác viên (contributor) và có thể viết các bài đăng blog cũng như bài viết trên trang, điều đó không nhất thiết có nghĩa là bạn có thể chỉnh sửa trang chủ hoặc trang liên hệ. Nếu bạn có thể thấy nút “Edit Post” trên thanh quản trị của mình, thì bạn cũng có thể chỉnh sửa trang đó bằng PB Sandwich. Hãy liên hệ với quản trị viên trang web của bạn để được cấp quyền chỉnh sửa nếu cần.
Có thể có lỗi Javascript đang khiến PB Sandwich ngừng hoạt động
PB Sandwich sử dụng Javascript rất nhiều. Nếu có lỗi Javascript xuất phát từ các tập lệnh khác trên trang web của bạn, điều này có thể ngăn PB Sandwich hoạt động. Để kiểm tra xem có phải do nguyên nhân này không, bạn có thể mở bảng điều khiển dành cho nhà phát triển (developer console) trong trình duyệt để kiểm tra lỗi.
Tôi khuyên bạn nên sử dụng Chrome cho việc này. Nhấp chuột phải vào bất kỳ vị trí nào trên trang, sau đó nhấp vào tùy chọn “Kiểm tra” (Inspect). Thao tác này sẽ mở ra một khu vực mới ở dưới cùng trình duyệt của bạn, hãy nhấp vào tab “Console”. Nếu có lỗi, bạn sẽ thấy nội dung tương tự như sau:

Nếu bạn gặp lỗi, bạn cũng có thể biết được lỗi này bắt nguồn từ đâu bằng cách nhấp hoặc di chuột qua tên của tập lệnh:

Những lỗi này có thể bắt nguồn từ giao diện của bạn hoặc các plugin khác mà bạn đang cài đặt. Việc khắc phục những lỗi đó có thể giúp PB Sandwich hoạt động trở lại.
Nếu giao diện hoặc một trong các plugin của bạn gây ra lỗi Javascript, vui lòng thông báo cho chúng tôi qua email tại [email protected] và chúng tôi sẽ cố gắng hết sức để khắc phục sự cố 🙂
Nếu bạn đang sử dụng CloudFlare, hãy đảm bảo Rocket Loader đã được tắt
CloudFlare là dịch vụ DNS CDN miễn phí được sử dụng rộng rãi. Dịch vụ này rất tuyệt, nhưng PBS hiện gặp vấn đề khi liên quan đến tính năng Rocket Loader. Rocket Loader giúp cải thiện thời gian tải các tệp Javascript, nhưng nó làm đảo lộn thứ tự phụ thuộc và thứ tự gọi các tập lệnh của PBS. Nếu bạn bật Rocket Loader, nút chỉnh sửa cho Page Builder Sandwich sẽ không xuất hiện (và không có lỗi Javascript nào hiển thị trong bảng điều khiển console).
Để kiểm tra xem trang web của bạn có đang sử dụng Rocket Loader của CloudFlare hay không, hãy xem mã nguồn trang web của bạn (nhấp chuột phải rồi chọn “Xem nguồn trang”), sau đó tìm kiếm chuỗi văn bản “rocketscript”, nếu tìm thấy chuỗi đó thì bạn đang bật Rocket Loader.

Đọc bài viết về Khả năng tương thích của CloudFlare & Rocket Loader để biết hướng dẫn đầy đủ về cách tắt tính năng này.
Tôi đã làm tất cả những điều đó và nút chỉnh sửa vẫn không xuất hiện!
Được rồi, tại thời điểm này, nếu không có giải pháp nào ở trên mang lại hiệu quả, thì có lẽ đã đến lúc giải thích tại sao nút không hiển thị và cần làm gì để xử lý. Sẵn sàng chưa? Hãy bắt đầu nào!
Lý do “Tại sao” (theo cách hiểu phi kỹ thuật)
Page Builder Sandwich cần biết nội dung trang/bài viết của bạn nằm ở đâu. Chúng tôi thực hiện việc này bằng cách theo dõi khi nào WordPress tải nội dung bài viết và “đánh dấu” khu vực đó, để khi mọi thứ đã được tải xong, chúng tôi có thể tìm thấy vị trí nội dung cần chỉnh sửa.
Đôi khi, một số plugin ghi đè hoặc bỏ qua quy trình này và thay vào đó cố gắng tải nội dung theo cách riêng của chúng. Đôi khi điều này không sao, nhưng trong một số tình huống nhất định, đặc biệt là khi liên quan đến việc tải nội dung bài viết chính, điều này có thể khiến một số plugin ngừng hoạt động. Khi một plugin khác bỏ qua quá trình tải này, các “dấu vết” mà chúng tôi tạo ra có thể bị mất, và khi đến lúc trình chỉnh sửa được kích hoạt, nó không thể tìm thấy nội dung của bạn ở đâu nữa. Vì vậy, nút chỉnh sửa không xuất hiện! Bạn cũng có thể thấy rằng một số plugin thêm nội dung vào trang của bạn, chẳng hạn như một số plugin chia sẻ mạng xã hội, cũng có thể ngừng hoạt động vì chính lý do này.
Lý do “Tại sao” (theo thuật ngữ kỹ thuật)
Page Builder Sandwich cần biết nơi đặt nội dung trang/bài viết của bạn, và nó thực hiện việc này bằng cách móc nối vào bộ lọc the_content và thêm một lớp bao bọc (wrapper) xung quanh nội dung chính của bạn. Một số plugin có thể ghi đè điều này và thay vào đó ghi đè nội dung bằng hàm get_the_content() ở giai đoạn sau. Thật không may, việc làm này ngăn TẤT CẢ các bộ lọc the_content được gọi và do đó wrapper của PBS bị mất. Mọi thay đổi của các plugin khác cũng sẽ bị mất theo.
Bản thân việc sử dụng get_the_content() không có gì sai, nhưng có thể có những tác động tiêu cực nếu hàm này được sử dụng trong truy vấn chính và bên trong trang mẫu (template) bài viết đơn lẻ thay vì lệnh gọi the_content() thông thường, nơi tất cả các bộ lọc the_content được thực thi.
Cần làm gì về điều này
Bạn có thể kiểm tra xem “dấu vết” của Page Builder Sandwich có bị thiếu hay không bằng cách truy cập trang/bài viết của bạn ở frontend và xem mã nguồn trang trong khi đã đăng nhập. Tìm kiếm trong mớ mã nguồn xem bạn có thể tìm thấy chuỗi sau không:
data-name="main-content"
Nếu bạn tìm thấy chuỗi này, thì có thể chỉ là sự cố Javascript ở đâu đó; hãy cho chúng tôi biết giao diện và các plugin bạn đang sử dụng và chúng tôi có thể khắc phục sự cố đó.
Nhưng nếu bạn không thể tìm thấy, thì có thể là do giao diện của bạn (hoặc một plugin, nhưng rất có thể là giao diện nếu đó là một trang hoặc bài đăng blog) đang can thiệp vào nội dung bài viết. Nếu đúng như vậy, bạn nên liên hệ với tác giả giao diện và thông báo cho họ về sự cố này! Bạn cũng có thể gửi cho họ phần giải thích kỹ thuật về lý do “tại sao” ở trên, điều này có thể giúp ích cho quá trình gỡ lỗi 🙂
Nếu bạn tự tin chỉnh sửa mã PHP, bạn có thể thử khắc phục bằng cách tìm tệp template xử lý nội dung bài viết. Một giải pháp mà chúng tôi đã gặp là thay thế các lệnh gọi:
$content = get_the_content();
bằng:
ob_start();
the_content();
$content = ob_get_clean();<br>
Lưu ý: Biến PHP trong mã của bạn có thể khác, nhưng bản chất vẫn như nhau. Nếu cách này hiệu quả, sẽ tốt hơn nếu bạn tạo một child theme thay vì trực tiếp áp dụng thay đổi này vào giao diện chính của bạn. Thay đổi này cũng có thể gây ra tác dụng phụ, vì vậy tốt nhất bạn nên tham khảo ý kiến của tác giả giao diện về vấn đề này.