Sửa Lỗi get_page_by_title Trong WordPress 6.2.0 Với WP_Query
Lỗi get_page_by_title()
xuất hiện trong WordPress từ phiên bản 6.2.0 do hàm này đã bị loại bỏ và thay thế bằng truy vấn WP_Query. Tuy nhiên, nhiều theme và plugin, đặc biệt là Flatsome, vẫn chưa cập nhật. Flatsome là một theme rất phổ biến tại Việt Nam và trên toàn thế giới.
Hàm get_page_by_title()
Là Gì?
Hàm get_page_by_title()
trong WordPress dùng để truy vấn và lấy một trang dựa trên tiêu đề. Nếu trang có tiêu đề khớp với giá trị bạn cung cấp, hàm sẽ trả về đối tượng trang. Nếu không tìm thấy trang, hàm trả về null
.
Hàm này thường được sử dụng trong các theme hoặc plugin để lấy thông tin trang dựa trên tiêu đề, như hiển thị thông tin trang chủ hoặc trong các widget.
Tại Sao get_page_by_title()
Bị Loại Bỏ (Deprecated)?
Từ phiên bản WordPress 5.5, hàm get_page_by_title()
đã bị loại bỏ vì lý do hiệu suất. Việc sử dụng hàm này có thể tạo ra nhiều truy vấn không cần thiết đến cơ sở dữ liệu, làm giảm hiệu suất của trang web.
WordPress khuyến khích sử dụng WP_Query thay thế, vì WP_Query giúp tối ưu hóa hiệu suất và cung cấp các tùy chọn truy vấn linh hoạt hơn, giúp giảm tải cho cơ sở dữ liệu.
Cách Thay Thế get_page_by_title()
Với WP_Query
Để thay thế hàm get_page_by_title()
bằng WP_Query, bạn có thể thực hiện các bước sau:
- Tìm và Xác Định Mã Sử Dụng get_page_by_title: Tìm trong mã nguồn trang web của bạn những chỗ sử dụng hàm
get_page_by_title()
. - Thay Thế Mã Bằng WP_Query: Dùng WP_Query để thay thế hàm
get_page_by_title()
. Bạn cần cấu hình các tham số truy vấn như loại bài viết, tiêu đề trang, và số lượng bài viết. - Sử Dụng Các Phương Thức WP_Query: Sử dụng phương thức
have_posts()
vàthe_post()
để lấy bài viết trong kết quả truy vấn. Sau đó, sử dụngget_permalink()
để lấy liên kết trang. - Reset Dữ Liệu Post: Sau khi truy vấn xong, nhớ sử dụng
wp_reset_postdata()
để đặt lại dữ liệu bài viết về trạng thái ban đầu.
Trước khi thực hiện, nhớ sao lưu trang web hoặc làm việc trên môi trường phát triển để tránh gây ảnh hưởng tới trang web.
Sửa Lỗi get_page_by_title()
Trên Theme Flatsome (Phiên Bản 3.16.8 Trở Xuống)
Đối với theme Flatsome phiên bản 3.16.8 trở xuống, bạn có thể sửa lỗi get_page_by_title()
theo các bước đơn giản sau:
Bước 1: Truy Cập Tệp Tin
Vào đường dẫn /wp-content/themes/flatsome/inc/helpers/helpers-shortcode.php
trong quản lý tệp của hosting hoặc sử dụng Theme Editor trong WordPress.
Bước 2: Thay Thế Hàm flatsome_smart_links()
Tìm hàm flatsome_smart_links()
và thay thế mã PHP cũ bằng mã mới. Bạn có thể sao chép mã mới từ bài viết này và dán vào hàm flatsome_smart_links()
.
Ví dụ Mã Thay Thế:
Bước 3: Tải Lại Trang
Sau khi thay thế mã xong, tải lại trang web và kiểm tra xem lỗi đã được sửa chưa.
Cài Theme Flatsome 3.16.8 Đã Sửa Lỗi
Nếu bạn không muốn chỉnh sửa thủ công, bạn có thể tải xuống phiên bản Flatsome 3.16.8 đã được fix lỗi get_page_by_title()
sẵn. Phiên bản này chưa kích hoạt bản quyền, nếu cần bạn có thể tham khảo cách kích hoạt bản quyền Flatsome.
Kết Luận
Việc thay thế get_page_by_title()
bằng WP_Query là bước đi đúng đắn để tối ưu hóa hiệu suất trang web. Hy vọng bài viết này sẽ giúp bạn dễ dàng khắc phục lỗi và cải thiện trải nghiệm người dùng. Nếu bạn thấy bài viết hữu ích, đừng quên để lại đánh giá và chia sẻ cảm nhận của mình!