วิธีสร้างการแบ่งหน้า WordPress สำหรับประเภทโพสต์ที่กำหนดเอง
เผยแพร่แล้ว: 2020-02-24การสร้างการแบ่งหน้าสำหรับประเภทโพสต์ที่กำหนดเองไม่ควรเป็นเรื่องท้าทาย เนื่องจากคุณสามารถนำแนวคิดเดียวกันกับที่เราใช้มาใช้ใหม่ได้ – วิธีสร้างการแบ่งหน้าคิวรีแบบกำหนดเองใน WordPress เราจำเป็นต้องค้นหาประเภทโพสต์ที่กำหนดเองจากนั้นแสดงข้อความค้นหาที่อยู่ในประเภทโพสต์นั้นหรือในประเภทโพสต์หลายประเภท
ในบทความนี้ ฉันจะแสดงวิธีสร้างการแบ่งหน้า WordPress สำหรับประเภทโพสต์ที่กำหนดเอง การแบ่งหน้าจะคล้ายกับการแบ่งหน้าที่เป็นตัวเลขนี้ เราจะสร้างข้อความค้นหาที่กำหนดเองซึ่งรับประเภทโพสต์ที่กำหนดเองทั้งหมด จากนั้นแสดงประเภทโพสต์ที่กำหนดเองพร้อมการวนซ้ำและการแบ่งหน้าตัวเลข
สร้างประเภทโพสต์ที่กำหนดเอง
ขั้นตอนแรกคือการ สร้างประเภทโพสต์ที่กำหนดเอง โดยใช้รหัสต่อไปนี้:
/** * ประเภทโพสต์ที่กำหนดเอง - register_post_type() * @description- Njengah Tutorial ตัวอย่างประเภทโพสต์ที่กำหนดเอง * @link -https://gist.github.com/Njengah/839466b773085ac2430772e081357cee * */ add_action('init', "njengah_tutorial_cpt"); ฟังก์ชัน njengah_tutorial_cpt(){ $labels = อาร์เรย์ ( 'name' => _x('Tutorials', 'ประเภทโพสต์ชื่อทั่วไป'), 'singular_name' => _x('Tutorial', 'โพสต์ชื่อเอกพจน์'), 'menu_name' => _x('บทแนะนำ', 'เมนูผู้ดูแลระบบ'), 'name_admin_bar' => _x('Tutorial', 'เพิ่มใหม่ในแถบผู้ดูแลระบบ'), 'add_new' => _x('เพิ่มใหม่', ''), 'add_new_item' => __('เพิ่มบทช่วยสอนใหม่'), 'edit_item' => __('แก้ไขบทช่วยสอน'), 'new_item' => __('บทแนะนำใหม่'), 'all_items' => __('บทแนะนำทั้งหมด'), 'view_item' => __('ดูบทช่วยสอน'), 'search_items' => __('Search Tutorials'), 'not_found' => __('ไม่พบบทช่วยสอน'), 'not_found_in_trash' => __('ไม่พบบทช่วยสอนในถังขยะ'), 'parent_item_colon' => __('บทแนะนำสำหรับผู้ปกครอง:'), ); $args = อาร์เรย์ ( 'ลำดับชั้น' => จริง 'labels' => $labels, 'สาธารณะ' => จริง 'publicly_queryable' => จริง 'คำอธิบาย' => __('คำอธิบาย.'), 'show_ui' => จริง 'show_in_menu' => จริง, 'show_in_nav_menus' => จริง 'query_var' => จริง 'เขียนใหม่' => จริง 'query_var' => จริง 'rewrite' => array('slug' => 'tutorial'), 'capability_type' => 'หน้า', 'has_archive' => จริง 'menu_position' => 22, "show_in_rest" => จริง 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'comments', 'revisions', 'page-attributes', 'custom-fields' ) ); register_post_type('บทช่วยสอน', $args); }
เพิ่มโค้ดนี้ลงในไฟล์ functions.php ของคุณ แล้วคุณจะเห็นประเภทโพสต์ที่กำหนดเอง ' บทช่วย สอน' ปรากฏบนแดชบอร์ด WordPress ของคุณ
รหัสนี้สามารถเปลี่ยนให้เหมาะกับประเภทโพสต์ที่คุณกำหนดเองได้ นอกจากนี้ยังสามารถสร้างประเภทโพสต์แบบกำหนดเองได้โดยใช้ปลั๊กอินการสร้างประเภทโพสต์แบบกำหนดเอง
สร้างเทมเพลตของเพจเพื่อแสดงประเภทโพสต์ที่กำหนดเอง
เราจำเป็นต้องสร้างเทมเพลตหน้าแบบกำหนดเองที่จะใช้เพื่อแสดงประเภทโพสต์ที่กำหนดเองโดยใช้วนรอบของ WordPress
ในการสร้างเทมเพลตเพจแบบกำหนดเอง คุณควรสร้างไฟล์ใหม่ในโฟลเดอร์รูทของธีมของคุณ
ตั้งชื่อไฟล์ – กำหนดเอง -page.php หรือชื่ออื่นใดที่อธิบายประเภทโพสต์ที่กำหนดเอง ตัวอย่างเช่น สำหรับประเภทโพสต์ที่กำหนดเองซึ่งสร้างเหนือชื่ออาจเป็น tutorials-page.php
ในไฟล์นี้ เพิ่มส่วนหัวของเทมเพลตหน้าแบบกำหนดเองโดยใช้รหัสต่อไปนี้และบันทึกการเปลี่ยนแปลง:
<?php /** * ชื่อเทมเพลต: เทมเพลตบทช่วยสอน */ get_header();
ตอนนี้คุณควรเห็นเทมเพลตของเพจแบบกำหนดเองปรากฏในตัวเลือกเทมเพลตแอตทริบิวต์ของเพจดังที่แสดงด้านล่าง:
สร้างประเภทโพสต์แบบกำหนดเอง แบบสอบถามที่กำหนดเอง
การสืบค้นข้อมูลแบบกำหนดเองเป็นขั้นตอนแรกที่จะช่วยให้เราสามารถค้นหาประเภทโพสต์แบบกำหนดเองที่มีอยู่และแสดงบนเทมเพลตของเพจแบบกำหนดเองที่เราสร้างขึ้นในขั้นตอนก่อนหน้า
ต่อไปนี้คือรหัสที่จะค้นหาประเภทโพสต์ที่กำหนดเองของบทช่วยสอนและดึงข้อมูลสองโพสต์แรกจากนั้นแสดงบนเทมเพลตของหน้าแบบกำหนดเองที่เราสร้างไว้ด้านบน
<?php /** * ชื่อเทมเพลต: เทมเพลตบทช่วยสอน */ get_header(); // ขั้นตอนที่ 1: สร้างคิวรีแบบกำหนดเอง $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'เพจ' ) : 1; $args = อาร์เรย์ ( 'posts_per_page' => 2,// สืบค้น 2 โพสต์ล่าสุด 'post_type' => 'บทช่วยสอน', 'paged' => $paged ); $customPostQuery = ใหม่ WP_Query($args); ?>
แสดงบทช่วยสอน โพสต์ที่กำหนดเองในเทมเพลตของเพจที่กำหนดเอง
ต่อไปนี้คือรหัสที่จะสืบค้นประเภทโพสต์ที่กำหนดเองและแสดงในเทมเพลตของเพจที่กำหนดเอง :
<?php /** * ชื่อเทมเพลต: เทมเพลตบทช่วยสอน */ get_header(); // ขั้นตอนที่ 1: สร้างคิวรีแบบกำหนดเอง $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'เพจ' ) : 1; $args = อาร์เรย์ ( 'posts_per_page' => 2,// สืบค้น 2 โพสต์ล่าสุด 'post_type' => 'บทช่วยสอน', 'paged' => $paged ); $customPostQuery = ใหม่ WP_Query($args); ?> <!-- ขั้นตอนที่ 2: แสดงโพสต์ที่เราสอบถามในขั้นตอนที่ 1 --> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if($customPostQuery->have_posts() ): ในขณะที่($customPostQuery->have_posts()): $customPostQuery->the_post(); โพสต์ $ ทั่วโลก; ?> <div class ="inner-content-wrap"> <ul class ="cq-posts-list"> <li> <h3 class ="cq-h3"><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></a></h3> <div> <ul> <div> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a> </div> </ul> <ul> <p><?php echo the_content(); ?></p> </ul> </div> </li> </ul> </div> <!-- สิ้นสุดการโพสต์บล็อก --> <?php เมื่อสิ้นสุด; เอนดิฟ; wp_reset_query();
สร้างฟังก์ชันการแบ่งหน้าโพสต์แบบกำหนดเองของ WordPress
ในขั้นตอนนี้ เราควรสร้างฟังก์ชันการแบ่งหน้าประเภทโพสต์ที่กำหนดเองซึ่งจะถูกเพิ่มไปยังฟังก์ชันของธีมและจะถูกเรียกหลังจากที่ลูปแสดงประเภทโพสต์ที่กำหนดเอง
ควรเพิ่มโค้ดต่อไปนี้ใน functions.php เพื่อสร้างฟังก์ชันการแบ่งหน้าประเภทโพสต์ที่กำหนดเอง
// ฟังก์ชั่นการแบ่งหน้าประเภทโพสต์ที่กำหนดเอง ฟังก์ชั่น cpt_pagination($pages = '', $range = 4) { $showitems = ($ช่วง * 2)+1; เพจ $ ทั่วโลก; ถ้า(ว่าง($เพจ)) $เพจ = 1; ถ้า($หน้า == '') { โกลบอล $wp_query; $pages = $wp_query->max_num_pages; ถ้า(!$หน้า) { $pages = 1; } } ถ้า (1 != $pages) { echo "<nav aria-label='Page navigation example'> <ul class='pagination'> <span>Page ".$paged." of ".$pages."</span>"; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>« First</a>"; if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹ Previous</a>"; สำหรับ ($i=1; $i <= $pages; $i++) { if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) { เสียงสะท้อน ($paged == $i)? "<li class=\"page-item active\"><a class='page-link'>".$i."</a></li>":"<li class='page-item' > <a href='".get_pagenum_link($i)."' class=\"page-link\">".$i."</a></li>"; } } if ($paged < $pages && $showitems < $pages) echo " <li class='page-item'><a class='page-link' href=\"".get_pagenum_link($paged + 1)" \">i class='flaticon flaticon-back'></i></a></li>"; if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo " <li class='page-item'><a class='page-link' href=' ".get_pagenum_link($pages)."'><i class='flaticon flaticon-arrow'></i></a></li>"; echo </ul></nav>\n"; } }
เรียกใช้ฟังก์ชันการแบ่งหน้าประเภทโพสต์แบบกำหนดเองในเทมเพลตหน้า
เนื่องจากเราได้สร้างฟังก์ชันการแบ่งหน้าประเภทโพสต์แบบกำหนดเอง และเราได้เรียกใช้การวนซ้ำและแสดงประเภทโพสต์ที่กำหนดเองแล้ว ตอนนี้เราจึงต้องเพิ่มฟังก์ชันการแบ่งหน้าที่ด้านล่างของเทมเพลตของหน้าแบบกำหนดเองเพื่อให้แสดงการแบ่งหน้า
ต่อไปนี้เป็นรหัสที่ควรใช้ในการตรวจสอบว่ามีฟังก์ชันการแบ่งหน้าแบบกำหนดเองหรือไม่ และถ้าเป็นเช่นนั้น เราควรเรียกให้แสดงการแบ่งหน้า
// ขั้นตอนที่ 3: เรียกฟังก์ชันการแบ่งหน้าที่นี่ ถ้า (function_exists("cpt_pagination")) { cpt_pagination($customPostQuery->max_num_pages); }
เราได้สร้างประเภทโพสต์แบบกำหนดเอง เทมเพลตหน้าแบบกำหนดเอง เพิ่มฟังก์ชันการแบ่งหน้าประเภทโพสต์แบบกำหนดเอง และแสดงทั้งประเภทโพสต์แบบกำหนดเองพร้อมข้อความค้นหาและฟังก์ชันการแบ่งหน้าประเภทโพสต์แบบกำหนดเอง
รูปแบบการแบ่งหน้าประเภทโพสต์แบบกำหนดเอง
คุณต้องเพิ่มสไตล์ให้กับการแบ่งหน้าประเภทโพสต์ที่กำหนดเองโดยใช้รหัสต่อไปนี้:
/** * รูปแบบการแบ่งหน้าประเภทโพสต์ที่กำหนดเอง * @ผู้เขียน Joe Njenga */ .การแบ่งหน้า { ชัดเจน:ทั้งสอง; ตำแหน่ง:ญาติ; ขนาดตัวอักษร:16px; ความสูงของบรรทัด:13px; ลอย:ขวา; รายการสไตล์ประเภท:ไม่มี; ความกว้าง:100% } .pagination span, .pagination a { แสดง:บล็อก; ลอย:ซ้าย; ระยะขอบ: 2px 2px 2px 0; ช่องว่างภายใน:6px 9px 5px 9px; ข้อความตกแต่ง:ไม่มี; ความกว้าง:อัตโนมัติ; สี:#fff; พื้นหลัง: #237697; } .pagination a: โฮเวอร์{ สี:#fff; พื้นหลัง: #000; } .การแบ่งหน้า .current{ ช่องว่างภายใน:6px 9px 5px 9px; พื้นหลัง: #999; สี:#fff;
เราพร้อมที่จะดูผลลัพธ์ของรหัสนี้ หากต้องการดูการแบ่งหน้าประเภทโพสต์ที่กำหนดเอง คุณต้องสร้างหน้าใหม่ด้วยเทมเพลตหน้าแบบกำหนดเองที่เราสร้างขึ้นในขั้นตอนที่ 2
หลังจากสร้างเพจนี้ คุณจะเห็นหน้าแสดงประเภทโพสต์ที่กำหนดเองที่เราสอบถามและการแบ่งหน้าที่เราสร้างดังแสดงในภาพด้านล่าง:
ความคิดสุดท้าย
ในการสร้างการแบ่งหน้าประเภทโพสต์แบบกำหนดเอง คุณต้องสร้างเทมเพลตหน้าแบบกำหนดเอง เพิ่มการสืบค้นข้อมูลแบบกำหนดเองเพื่อรับโพสต์แบบกำหนดเองทั้งหมดที่คุณต้องการแสดง และเรียกใช้ฟังก์ชันการแบ่งหน้าแบบกำหนดเองที่คุณเพิ่มลงใน functions.php ในการรับโค้ดแบบเต็มนี้ ฉันได้เพิ่มลงใน git repo และคุณสามารถเข้าถึงได้ที่นี่ – WordPress Custom Post Type Pagination