วิธีสร้างการแบ่งหน้าแบบสอบถามแบบกำหนดเองใน WordPress ด้วยตัวอย่าง
เผยแพร่แล้ว: 2020-02-24การสร้างการแบ่งหน้าแบบสอบถามที่กำหนดเองใน WordPress เป็นหนึ่งในโซลูชันการเรียงลำดับหน้ามากที่สุดสำหรับโพสต์ในบล็อกและประเภทโพสต์ที่กำหนดเอง หากคุณต้องการสร้างการแบ่งหน้าแบบสอบถามแบบกำหนดเองในบล็อก WordPress ของคุณ โพสต์นี้จะแนะนำคุณ ตามหลักการแล้วการแบ่งหน้าแบบสอบถามที่กำหนดเองนั้นเกี่ยวข้องกับการใช้พารามิเตอร์การสืบค้นที่แตกต่างกันเพื่อสร้างการแบ่งหน้าของโพสต์ WordPress ที่ยึดตามการสืบค้นนี้
ในบทช่วยสอนก่อนหน้านี้ ฉันได้อธิบายรายละเอียดเกี่ยวกับวิธีการเพิ่มเลขหน้าใน WordPress รวมถึงวิธีสร้างภาพย่อหน้าก่อนหน้าและถัดไปของบทความ และวิธีแบ่งบทความออกเป็นหลายหน้าโดยใช้การแบ่งหน้า ฉันยังแชร์รหัสการแบ่งหน้าของ WordPress จำนวนหนึ่งที่คุณสามารถใช้ในบล็อกของคุณเพื่อเพิ่มตัวเลือกการแบ่งหน้าที่คุณต้องการ ในบทความนี้ ผมจะอธิบายเกี่ยวกับวิธีสร้างและใช้การแบ่งหน้าแบบสอบถามแบบกำหนดเองบนไซต์ WordPress ของคุณ
การแบ่งหน้าแบบสอบถามแบบกำหนดเอง
ดังที่ฉันได้กล่าวไว้ในบทนำ การแบ่งหน้าแบบสอบถามแบบกำหนดเองประกอบด้วยสามส่วน ได้แก่: การสืบค้นแบบกำหนดเอง โค้ดสำหรับแสดงการแบ่งหน้า และรูปแบบบางอย่างเพื่อทำให้การแบ่งหน้าดูดี เราจะแบ่งรหัสการแบ่งหน้าแบบสอบถามที่กำหนดเองออกเป็นสามขั้นตอนเหล่านี้:
สร้างแบบสอบถามที่กำหนดเองของโพสต์หรือโพสต์ที่กำหนดเอง
ขั้นตอนแรกคือการสร้างคิวรีที่โดยทั่วไปแล้วจะเป็นอาร์เรย์ของอาร์กิวเมนต์ที่เราตั้งใจจะใช้ในคิวรีแบบกำหนดเอง
ในการแสดงการแบ่งหน้าแบบสอบถามแบบกำหนดเองนี้ ให้เราเริ่มต้นด้วยการสร้างเทมเพลตของหน้าแบบกำหนดเอง ซึ่งเราจะเพิ่มรหัสสำหรับการแบ่งหน้าแบบสอบถามแบบกำหนดเอง
ต่อไปนี้คือตัวอย่างเทมเพลตของเพจแบบกำหนดเองที่มีโค้ดการสืบค้นแบบกำหนดเอง:
<?php /** * ชื่อเทมเพลต: การแบ่งหน้า CQ * */ get_header(); // ขั้นตอนที่ 1: สร้างคิวรีแบบกำหนดเอง $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'เพจ' ) : 1; $args = อาร์เรย์ ( 'posts_per_page' => 2,// สืบค้นข้อมูล 5 โพสต์ล่าสุด 'paged' => $paged ); $customQuery = ใหม่ WP_Query($args);
โค้ดนี้สร้างเทมเพลตเพจแบบกำหนดเองที่คุณสามารถดูได้ภายใต้แอตทริบิวต์ของเพจดังที่แสดงในภาพด้านล่าง:
แบบสอบถามสามารถมีอาร์กิวเมนต์ได้หลายแบบ แต่ในกรณีนี้ เราจำกัดเฉพาะ 'posts_per_page' ซึ่งเป็นจำนวนโพสต์ที่เราต้องการแสดงบนเพจ
นอกจากนี้เรายังสามารถระบุประเภทโพสต์โดยใช้ 'post_type', orderby, ผู้แต่ง และอื่นๆ อีกมากมาย ต่อไปนี้คือตัวอย่างของข้อความค้นหาอื่นสำหรับประเภทโพสต์แบบกำหนดเองที่ชื่อ 'book':
//รับผู้เขียนปัจจุบันเพื่อใช้ในแบบสอบถาม $current_author = ( isset($_GET ) ) ? get_user_by( 'slug', $author_name ) : get_userdata( intval( $author ) ); /* ตั้งค่าอาร์กิวเมนต์สำหรับแบบสอบถาม $args = อาร์เรย์ ( 'post_type' => array( 'เป้าหมาย' ), 'orderby' => 'วันที่', 'order' => 'desc', 'posts_per_page' => 10, 'paged' => get_query_var( 'หน้า' ) ? get_query_var( 'หน้า' ): 1, 'ผู้เขียน' => $current_author->ID ); // ยกตัวอย่างคำถาม $query = ใหม่ WP_Query( $args );
หลังจากที่เราสร้าง $args และสร้างอินสแตนซ์ของแบบสอบถามแล้ว ตอนนี้เราก็พร้อมที่จะแสดงโพสต์ในลูปและเพิ่มการสืบค้นข้อมูลที่กำหนดเองในขั้นตอนต่อไป
แสดงโพสต์ที่สอบถามใน Custom Page Template
ในการแสดงโพสต์ที่สอบถาม ได้เพิ่มโค้ดลงในโค้ดเทมเพลตที่กำหนดเองดั้งเดิมแล้ว และโค้ดแบบเต็มมีดังนี้:
<?php /** * ชื่อเทมเพลต: การแบ่งหน้า CQ * */ get_header(); // ขั้นตอนที่ 1: สร้างคิวรีแบบกำหนดเอง $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'เพจ' ) : 1; $args = อาร์เรย์ ( 'posts_per_page' => 2,// สืบค้นข้อมูล 5 โพสต์ล่าสุด 'paged' => $paged ); $customQuery = ใหม่ WP_Query($args); ?> <!-- ขั้นตอนที่ 2: แสดงโพสต์ที่เราสอบถามในขั้นตอนที่ 1 --> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if($customQuery->have_posts() ): ในขณะที่($customQuery->have_posts()): $customQuery->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();
สร้างฟังก์ชันการแบ่งหน้า
ในขั้นตอนสุดท้ายนี้ เราจำเป็นต้องสร้างฟังก์ชันการแบ่งหน้าที่เราจะใช้ในเทมเพลตหน้าแบบกำหนดเองด้านบนเพื่อแสดงการแบ่งหน้าแบบสอบถามแบบกำหนดเอง ในการสร้างฟังก์ชันการแบ่งหน้า เราจำเป็นต้องเพิ่มโค้ดต่อไปนี้ในไฟล์ functions.php:
// ฟังก์ชั่นการแบ่งหน้าแบบกำหนดเอง ฟังก์ชัน cq_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("cq_pagination")) { cq_pagination($customQuery->max_num_pages); }
โค้ดสุดท้ายที่สร้างเทมเพลตเพจแบบกำหนดเองด้วยฟังก์ชันการแบ่งหน้าควรเป็นดังนี้:
<?php /** * ชื่อเทมเพลต: การแบ่งหน้า CQ * */ get_header(); // ขั้นตอนที่ 1: สร้างคิวรีแบบกำหนดเอง $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'เพจ' ) : 1; $args = อาร์เรย์ ( 'posts_per_page' => 2,// สืบค้นข้อมูล 5 โพสต์ล่าสุด 'paged' => $paged ); $customQuery = ใหม่ WP_Query($args); ?> <!-- ขั้นตอนที่ 2: แสดงโพสต์ที่เราสอบถามในขั้นตอนที่ 1 --> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if($customQuery->have_posts() ): ในขณะที่($customQuery->have_posts()): $customQuery->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(); // ขั้นตอนที่ 3: เรียกฟังก์ชันการแบ่งหน้าที่นี่ ถ้า (function_exists("cq_pagination")) { cq_pagination($customQuery->max_num_pages); } ?> </main><!-- #main --> </div><!-- #primary --> </div><!-- .wrap --> <!---- จบหน้า --------> <?php get_footer(); ?>
หากคุณปฏิบัติตามทุกขั้นตอนอย่างถูกต้อง คุณควรมีการแบ่งหน้าตามภาพด้านล่าง:
จัดรูปแบบการแบ่งหน้าคิวรีแบบกำหนดเอง
ขั้นตอนสุดท้ายคือการเพิ่มสไตล์ให้กับการแบ่งหน้าแบบกำหนดเองเพื่อให้เข้ากับสไตล์และการออกแบบของธีม ต่อไปนี้เป็นสไตล์ CSS ที่คุณควรเพิ่มในสไตล์ชีตเพื่อกำหนดรูปแบบการแบ่งหน้าแบบกำหนดเอง:
/** * รูปแบบการแบ่งหน้า CQ * @ผู้เขียน 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; }
หลังจากที่คุณเพิ่มรูปแบบการแบ่งหน้าเหล่านี้แล้ว รูปลักษณ์สุดท้ายของการแบ่งหน้าแบบกำหนดเองควรเป็นดังที่แสดงในภาพด้านล่าง:
ความคิดสุดท้าย
ในบทความนี้ เราได้สรุปวิธีการทีละขั้นตอนในการเพิ่มการแบ่งหน้าแบบสอบถามที่กำหนดเองลงในบล็อก WordPress ของคุณ ขั้นตอนเหล่านี้รวมถึง สร้างแบบสอบถาม สร้างเทมเพลตหน้าแบบกำหนดเองเพื่อแสดงโพสต์ที่สอบถามแบบกำหนดเองพร้อมการแบ่งหน้า และเพิ่มฟังก์ชันการแบ่งหน้าในไฟล์ functions.php สุดท้ายนี้อย่าลืมเรียกใช้ฟังก์ชันการแบ่งหน้าและเพิ่มสไตล์ที่เหมาะสมกับการออกแบบธีม WordPress ของคุณ