Hôm nay trên subreddit WordPress, ai đó đã hỏi liệu có thể có các bài đăng từ loại bài đăng tùy chỉnh [ví dụ như công thức nấu ăn] xuất hiện trong blog chính với tần suất đã đặt [ví dụ:. mỗi bài thứ 5]. Suy nghĩ ban đầu của tôi là, có lẽ không. Nhưng dù sao tôi cũng quyết định đào sâu một chút. Hóa ra có một bộ lọc tiện dụng tên là
if [ ! is_main_query[] ] return $posts;3 mà tôi không biết là có tồn tại
Bộ lọc
if [ ! is_main_query[] ] return $posts;3 được chạy ở cuối
if [ ! is_main_query[] ] return $posts;5 [] – sau khi kết quả của truy vấn đã được truy xuất từ cơ sở dữ liệu, nhưng trước khi Vòng lặp bắt đầu. Chúng tôi có thể sử dụng bộ lọc này để sửa đổi kết quả, bao gồm thêm bộ lọc của riêng chúng tôi. Chức năng bộ lọc của chúng tôi sẽ nhận được hai đối số
if [ is_admin[] ] return $posts;
0 – kết quả của truy vấn dưới dạng một mảng các đối tượng bài đăngif [ is_admin[] ] return $posts;
1 – phiên bản WP_Query
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }
Chúng tôi không muốn bộ lọc của mình ảnh hưởng đến danh sách bài đăng trong bảng điều khiển quản trị viên, vì vậy chúng tôi sẽ bắt đầu với
if [ is_admin[] ] return $posts;
Chúng tôi cũng chỉ muốn bộ lọc của mình ảnh hưởng đến truy vấn chính, vì vậy chúng tôi sẽ thêm bộ lọc này
if [ ! is_main_query[] ] return $posts;
Chúng tôi sẽ đặt một biến cho tần suất chèn mà chúng tôi sẽ sử dụng trong một số phép toán sau này [nếu chúng tôi đang phát triển biến này dưới dạng plugin công khai, chúng tôi có thể đặt/lấy giá trị này làm tùy chọn/cài đặt]
$freq = 5;
Bây giờ chúng tôi sẽ lấy công thức nấu ăn của chúng tôi. Chúng tôi sẽ nhanh chóng tính toán
if [ is_admin[] ] return $posts;2 của mình, dựa trên giá trị từ truy vấn chính và tần suất của chúng tôi, đồng thời sử dụng cùng một giá trị
if [ is_admin[] ] return $posts;3 làm truy vấn chính – điều này đảm bảo rằng các bài đăng được chèn luôn đồng bộ bất kể cài đặt phân trang________số 8
Sau đó, chúng tôi sẽ lặp lại các công thức nấu ăn và chèn chúng vào mảng
if [ is_admin[] ] return $posts;0 bằng cách sử dụng
if [ is_admin[] ] return $posts;5 [tài liệu]. Chúng tôi sẽ làm một phép toán nhỏ để đảm bảo rằng công thức nấu ăn của bạn được chèn chính xác [Tôi chắc chắn rằng có một cách hay hơn để thực hiện việc này – nếu bạn biết một cách, vui lòng cho tôi biết trong phần nhận xét]
if [ is_admin[] ] return $posts;1
Đây là mã cuối cùng tất cả cùng nhau
if [ is_admin[] ] return $posts;2
Tác giả
Bố cục và hình thức của các bài đăng này ở chân trang của bạn có thể được tạo kiểu để trông như thế nào bạn muốn bằng cách sử dụng CSS. Nơi tốt nhất để thêm bất kỳ CSS nào là trong tệp
if [ is_admin[] ] return $posts;34 nằm trong thư mục chính của chủ đề của bạn. Chúng tôi có một số CSS khả thi mà bạn có thể muốn sử dụng bên dưới
if [ is_admin[] ] return $posts;3
Khi CSS này đã được lưu và trang được làm mới, bạn sẽ thấy bố cục của các bài đăng Công thức của bạn ở chân trang sẽ thay đổi như thế này
Tầm quan trọng của việc đặt lại vòng lặp
Bạn có thể nhận thấy rằng sau khi xác định các đối số cần thiết trong mã, một vòng lặp bài đăng bắt đầu và kết thúc bằng hàm
if [ is_admin[] ] return $posts;35. Việc sử dụng chức năng này rất quan trọng và đây là lý do tại sao
Khi WordPress tạo bố cục trang, nó sử dụng biến toàn cầu
if [ is_admin[] ] return $posts;36 hoạt động tốt nếu chỉ có một vòng lặp trong trang. Bây giờ, chúng tôi đã thêm vòng lặp tùy chỉnh của mình, về cơ bản, chúng tôi sẽ ghi đè biến toàn cầu
if [ is_admin[] ] return $posts;36 và trừ khi chúng tôi thông báo cho WordPress rằng vòng lặp đã đặt lại, nó sẽ tiếp tục từ đó bằng cách sử dụng loại bài đăng tùy chỉnh mà chúng tôi đã xác định trong vòng lặp của mình
Hãy xem cách nó hoạt động trong thực tế bằng cách lặp lại tiêu đề bài đăng theo đoạn mã trên như thế này
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }3
Bây giờ, nếu chúng tôi làm mới trang của mình trên giao diện người dùng của trang web, chúng tôi sẽ thấy tiêu đề 'Bài đăng 1' bên dưới các công thức nấu ăn gần đây của chúng tôi
Điều này có ý nghĩa bởi vì chúng tôi đặt lại vòng lặp ban đầu bằng hàm
if [ is_admin[] ] return $posts;38
Bây giờ, hãy nhận xét
if [ is_admin[] ] return $posts;38 từ mã của bạn. Bạn sẽ nhận thấy rằng mã
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }30 sẽ lặp lại tiêu đề 'Công thức 1' thay vì 'Bài 1'
Các loại bài đăng tùy chỉnh – Quản lý thêm
Để tùy chỉnh thêm hành vi và giao diện bài đăng tùy chỉnh của chúng tôi, chúng tôi sẽ xem xét một số tùy chọn có thể được thêm dưới dạng phần mở rộng cho mã mà chúng tôi đã sử dụng trong bài viết trước để đăng ký loại bài đăng 'công thức nấu ăn' của chúng tôi
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }7
Chúng tôi sẽ thêm một số đối số để
- Thay đổi sên URL của công thức Loại bài đăng tùy chỉnh
- Thay đổi vị trí menu quản trị Custom Post Type
- Thay đổi biểu tượng menu
Thay đổi Slug URL loại bài đăng tùy chỉnh
Nếu chúng tôi tạo một bài đăng công thức và đặt tên là 'Công thức 1' thì URL mặc định của bài đăng 'Công thức 1' sẽ giống như
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }31 với điều kiện là các liên kết cố định được đặt thành 'Tên bài đăng' trong Cài đặt liên kết cố định của chúng tôi
Nếu bạn muốn thay đổi cách Loại bài đăng tùy chỉnh Công thức xuất hiện trong URL, bạn có thể sử dụng đối số
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }32 với khóa
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }33 của nó
Như chúng tôi đã nhận thấy từ URL, nếu đối số này bị bỏ qua, giá trị mặc định sẽ là nhãn 'công thức nấu ăn' của Loại bài đăng tùy chỉnh. Ví dụ: nếu chúng tôi muốn thay đổi điều này thành
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }34, chúng tôi phải ghi đè lên nó bằng cách chỉnh sửa đoạn mã của chúng tôi để trông như thế này
if [ is_admin[] ] return $posts;2
Bây giờ, nếu bạn lưu liên kết cố định [xóa bộ đệm ẩn liên kết cố định] và xem lại công thức của mình thì URL của bạn sẽ là
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }35
Lưu ý rằng nếu bạn thay đổi sên, bạn cũng sẽ phải thay đổi URL lưu trữ từ
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }36 thành
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }37 trong trang Menu chính
Thay đổi vị trí của Custom Post Type Menu
Nếu bạn muốn di chuyển menu Recipes sang một vị trí khác, bạn có thể sử dụng đối số
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }38 như thế này
if [ is_admin[] ] return $posts;7
Các giá trị bạn có thể sử dụng cho đối số này là
0. ở trên cùng
5. bên dưới Bài viết
10. bên dưới Phương tiện
15. bên dưới Liên kết
20. bên dưới Trang
25. bình luận bên dưới
60. bên dưới khoảng trống đầu tiên trong menu
65. Plugin bên dưới
70. bên dưới Người dùng
75. bên dưới Công cụ
80. bên dưới Cài đặt
100. bên dưới khoảng cách thứ hai trong menu
Ảnh chụp màn hình bên dưới hiển thị vị trí của menu khi giá trị 5 đã được thêm vào đối số
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }38
Thay đổi biểu tượng menu loại bài đăng tùy chỉnh
Hiện tại, menu Công thức sử dụng biểu tượng bài viết mặc định. Nó sẽ là một liên lạc tốt đẹp nó có biểu tượng độc đáo của riêng mình. Để thực hiện điều này, chúng ta có thể sử dụng đối số
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }70
if [ ! is_main_query[] ] return $posts;0
Để hiển thị biểu tượng của riêng bạn, bạn có thể chèn URL đầy đủ của vị trí biểu tượng menu của mình [như được hiển thị trong mã ở trên] hoặc sử dụng bằng cách thêm tên lớp của biểu tượng. Bạn có thể xem các biểu tượng với các lớp tương ứng tại đây
Ví dụ: nếu bạn chọn , bạn sẽ thêm nó vào mã của mình như thế này
add_filter[ 'the_posts', 'gowp_insert_recipes', 10, 2 ]; function gowp_insert_recipes[ $posts, $query ] { return $posts; }71
if [ ! is_main_query[] ] return $posts;2
Kết quả cuối cùng sẽ là biểu tượng bạn chọn xuất hiện trong Menu Bài đăng tùy chỉnh của bạn… giúp làm cho Bài đăng tùy chỉnh của bạn cảm thấy thực sự tùy chỉnh
Đọc thêm
Tạo loại bài đăng tùy chỉnh WordPress bằng plugin
Tạo loại bài đăng tùy chỉnh WordPress theo cách thủ công
Tạo loại bài đăng tùy chỉnh WordPress bằng plugin của riêng bạn.
Phần kết luận
Hy vọng rằng những mẹo này thực sự giúp ích cho bạn trong quá trình xây dựng Loại bài đăng tùy chỉnh của riêng mình và khi làm như vậy cho phép bạn cải thiện hơn nữa các chức năng và việc sử dụng trang web WordPress của mình. Như với tất cả mã hóa, tốt nhất bạn nên dành chút thời gian để chơi thử và xem mã mới của bạn tác động như thế nào đến trang web của bạn. Việc xây dựng trên những nền tảng này sau đó sẽ cho phép bạn giải quyết các dự án thậm chí phức tạp hơn, nơi cần phải tùy chỉnh nhiều