Làm thế nào để Thêm bài viết Sticky trong WordPress Custom Post Type Archives

Gần đây, một trong những người dùng của chúng tôi đã hỏi chúng tôi liệu có thể thêm các bài đăng dính vào kho lưu trữ kiểu đăng tuỳ chỉnh hay không. Theo mặc định, WordPress có chức năng dính cho các bài đăng, nhưng không cho các loại đăng bài khác. Trong bài này, chúng tôi sẽ chỉ cho bạn cách thêm các bài viết dính trong WordPress lưu trữ kiểu tùy chỉnh. Trước khi chúng tôi tiến lên phía trước, bạn có thể muốn tìm hiểu cách tạo các loại bài đăng tùy chỉnh trong WordPress.

Thêm Bài đăng Nổi bật trong Tùy chỉnh Các Bài đăng

Điều đầu tiên bạn cần làm là cài đặt và kích hoạt plugin Sticky Custom Post Types. Sau khi kích hoạt plugin, hãy vào Cài đặt »Đọc và cuộn xuống phần Sticky Custom Post Types. Tiếp theo, bạn cần chọn các loại bài đăng tùy chỉnh mà bạn muốn chọn Bật tùy chọn này.

Bật bài đăng dính cho các loại bài đăng tùy chỉnh

Bây giờ những gì chúng tôi đã làm ở đây là chúng tôi đã thêm tính năng bài viết dính vào các loại bài đăng tùy chỉnh của chúng tôi. Các bài đăng trong bài đăng tuỳ chỉnh sẽ được hiển thị ở trang đầu giống như các bài viết dính thường xuyên.

Vấn đề là theo mặc định, WordPress chỉ hiển thị các bài viết dính trên trang chủ. Nó không hiển thị các bài viết dính trên các trang lưu trữ.

Hiển thị các bài viết trong bài viết Custom Post Type Archives

Cho phép giả sử rằng bạn có một loại bài đăng tùy chỉnh cho Xem Phim với các bài đăng dính cho phép sử dụng plugin mà chúng tôi đã đề cập ở trên. Bây giờ bạn muốn các bài đăng dính trong các bài đánh giá bài đăng đăng các loại được hiển thị khác nhau và trên đầu đánh giá phim không thường xuyên. Như thế này:

Hiển thị một bài đăng dính trên trang lưu trữ kiểu đăng bài tùy chỉnh

Để đạt được mục tiêu này, điều đầu tiên bạn cần là một mẫu lưu trữ cho loại bài đăng tùy chỉnh của bạn như sau: lưu trữ-post-type.php . Tìm hiểu cách tạo trang kho lưu trữ kiểu đăng tuỳ chỉnh. Ví dụ: nếu bạn có một loại bài đăng tùy chỉnh đánh giá phim thì mẫu trang lưu trữ của bạn phải là lưu trữ-phim-reviews.php . Nếu bạn không có một mẫu, hãy tạo một mẫu. Đơn giản chỉ cần sao chép nội dung của archive.php trong thư mục chủ đề của bạn và dán chúng vào một tệp mới archive-your-post-type.php .

Bước tiếp theo là thêm mã này vào chủ đề của bạn functions.php tập tin:

chức năng wpb_cpt_sticky_at_top ($ posts) {
 
     / / chỉ áp dụng nó vào lưu trữ
     if (is_main_query () && is_post_type_archive ()) {
         $ wp_query toàn cầu;
 
         $ sticky_posts = get_option ('sticky_posts');
         $ num_posts = count ($ posts);
         $ sticky_offset = 0;
 
         // Tìm các bài viết dính
         for ($ i = 0; $ i ID, $ sticky_posts)) {
                 $ sticky_post = $ bài viết [$ i];
 
                 / / Loại bỏ dính khỏi vị trí hiện tại
                 array_splice (bài đăng $, $ i, 1);
 
                 / / Di chuyển về phía trước, sau khi dính
                 array_splice ($ posts, $ sticky_offset, 0, mảng ($ sticky_post));
                 $ sticky_offset ++;
 
                 // Xóa bài đăng khỏi mảng bài đăng dính
                 $ offset = array_search ($ sticky_post-> ID, $ sticky_posts);
                 unset ($ sticky_posts [$ offset]);
             }
         }
 
         / / Hãy tìm bài viết dính hơn nếu cần thiết
         if (! empty ($ sticky_posts)) {
 
             $ stickies = get_posts (mảng (
                 'post__in' => $ sticky_posts,
                 'post_type' => $ wp_query-> query_vars ['post_type'],
                 'post_status' => 'xuất bản',
                 'nopaging' => đúng
             ));
 
             foreach ($ dính như $ sticky_post) {
                 array_splice ($ posts, $ sticky_offset, 0, mảng ($ sticky_post));
                 $ sticky_offset ++;
             }
         }
 
     }
 
     trả lại $ bài đăng;
 }
 
 add_filter ('the_posts', 'wpb_cpt_sticky_at_top');

 / / Thêm lớp dính trong tiêu đề bài báo để phong cách bài viết dính khác nhau

 hàm cpt_sticky_class ($ lớp) {
 if (is_sticky ()):
 $ classes [] = 'dính';
 trả về $ lớp học;
 endif;
 trả về $ lớp học;
 }
 add_filter ('post_class', 'cpt_sticky_class'); 

Đoạn mã trên sẽ di chuyển các bài viết dính của bạn lên trên cùng và nếu chủ đề của bạn đang sử dụng post_class () , sau đó nó sẽ thêm dính vào lớp sau.

Bạn có thể tạo kiểu bài viết dính của mình bằng cách sử dụng .sticky class trong bảng định kiểu của bạn. Thí dụ:

.sticky {
 màu nền: #ededed;
 background-image: url ('http://example.com/wp-content/uploads/featured.png');
 lặp lại: không lặp lại;
 vị trí nền: phía trên cùng;
 } 

Tạo kiểu bài viết dính

Chúng tôi hy vọng bài viết này đã giúp bạn thêm các bài viết dính trong kho lưu trữ kiểu tùy chỉnh. Đối với các câu hỏi và phản hồi xin vui lòng để lại một bình luận dưới đây.

Nguồn: Tareq Hasan