ตั้งค่าการจำกัดโพสต์และเนื้อหาสำหรับหน้าแรก บล็อก & หน้าเก็บถาวร
เผยแพร่แล้ว: 2013-08-15ในบทช่วยสอนนี้ เราจะดูการตั้งค่า Genesis ในตัวที่คุณสามารถใช้เพื่อควบคุมการจำกัดเนื้อหาในไฟล์เก็บถาวรและเทมเพลตหน้าบล็อกของคุณ
นอกจากนี้ เราจะพิจารณาการตั้งค่าการอ่านของ WordPress และผลกระทบต่อการตั้งค่า Genesis
นอกจากนี้ เรายังจะดูข้อมูลโค้ดบางส่วนที่คุณสามารถใช้เพื่อปรับแต่งของคุณเพิ่มเติม:
- หน้าบล็อก
- หอจดหมายเหตุ
- หน้าแรก
- วงกริด
- ประเภทโพสต์ที่กำหนดเอง
เราจะใช้ชุดรูปแบบลูก Eleven40 Pro ใหม่โดย StudioPress เช่นเดียวกับชุดรูปแบบย่อยของ Genesis 2.0 Sample ซึ่งไม่มีกริดลูปหรือวิดเจ็ตโฮมเพจที่พร้อมใช้งานทันที
ธีม Eleven40 Pro ร่วมกับธีม StudioPress อื่นๆ เช่น ธีม Balance รวมถึงกริดแบบวนซ้ำในไฟล์ home.php
การตั้งค่าการอ่านใน WordPress
ประการแรก ให้ดูที่การตั้งค่าที่มีอยู่ที่ WordPress มีให้ในการตั้งค่าการอ่าน การตั้งค่าเหล่านี้จะส่งผลต่อจำนวนโพสต์ที่แสดงในหน้าเก็บถาวรทั้งหมดของคุณ รวมถึง:
- หน้ารายการ บล็อก
- หน้าเอกสาร รวมถึงหน้าผู้เขียน บล็อก หมวดหมู่ การค้นหา และแท็ก
การตั้งค่าการอ่านกำหนดจำนวนโพสต์ที่แสดงบนหน้าเอกสารและโฮมเพจทั้งหมดของคุณ หากปล่อยไว้ที่การตั้งค่าเริ่มต้นดังที่คุณเห็นในภาพหน้าจอด้านบน
การตั้งค่าการอ่านไม่ได้ควบคุมหน้าบล็อกของคุณ เนื่องจากถูกควบคุมโดยการตั้งค่าเทมเพลตหน้าบล็อกที่ Genesis รวมอยู่ภายใต้การตั้งค่า Genesis > Theme:
มาดูตัวอย่างกัน: หากการตั้งค่าการอ่านของคุณถูกตั้งค่าให้แสดง 5 บทความ หน้าแรกของคุณและที่เก็บถาวรทั้งหมดจะแสดง 5 บทความ อย่างไรก็ตาม หน้าบล็อกของคุณจะแสดงสิ่งที่คุณกำหนดให้แสดง
แม้ว่าการตั้งค่าการอ่านอาจถูกตั้งค่าเป็น: หน้าบล็อกแสดงไม่เกิน 5 หน้า แต่จะมีผลกับหน้าแรกเท่านั้น ไม่ใช้เมื่อใช้หน้าแบบกำหนดเองคงที่กับเทมเพลตหน้าบล็อกสำหรับหน้าบล็อกที่กำหนดเองของคุณ
การตั้งค่าเหล่านี้ควบคุมโดยการตั้งค่าเทมเพลตหน้าบล็อกกำเนิดตามที่แสดงในภาพหน้าจอด้านบน
การปรับแต่งขีดจำกัดการโพสต์หน้าแรกเริ่มต้น
หากคุณต้องการให้ไฟล์เก็บถาวรของคุณแสดงหมายเลขที่กำหนดไว้ในการตั้งค่าการอ่าน แต่แสดงจำนวนโพสต์ที่แตกต่างกันในหน้าแรกของคุณ คุณจะต้องใช้โค้ดที่กำหนดเองในไฟล์ functions.php ธีมลูกของคุณ:
add_action( 'pre_get_posts', 'change_posts_number_home_page' ); function change_posts_number_home_page( $query ) { if ($query->is_home() && $query->is_main_query() ) { $query->set( 'posts_per_page', 5 ); <pre><code>return $query; } </code></pre> }
โค้ดด้านบนนี้ไม่มีผลกับจำนวนโพสต์ที่แสดงในที่เก็บถาวรของคุณ
เปลี่ยนจำนวนโพสต์ที่แสดงบนหอจดหมายเหตุ
คุณยังสามารถใช้รหัสนี้เพื่อเปลี่ยนจำนวนโพสต์ที่แสดงในคลังข้อมูลต่างๆ เช่น หน้าหมวดหมู่และหน้าที่เก็บถาวรของผู้เขียน โดยไม่ส่งผลต่อการตั้งค่าการอ่านซึ่งควบคุมส่วนอื่นๆ:
add_action( 'pre_get_posts', 'change_number_posts_per_category' ); function change_number_posts_per_category( $query ) { <pre><code>if ( is_category('29') ) { $query->set( 'posts_per_page', 1 ); return $query; </code></pre> }}
การกำหนดขีด จำกัด การโพสต์ Grid Loop บนโฮมเพจ
หากธีมของคุณมีกริดลูปในไฟล์ home.php คุณก็สามารถควบคุมจำนวนโพสต์เด่นแบบเต็มความกว้างและจำนวนโพสต์ลูปกริดที่จะแสดงบนโฮมเพจของคุณ
นอกจากนี้ คุณยังสามารถควบคุมการจำกัดเนื้อหาสำหรับทั้งบทความเด่นและโพสต์ที่แสดงในตารางบนหน้าแรกเท่านั้น เนื่องจากโค้ดจะรวมอยู่ในไฟล์ home.php
การตั้งค่าทั้งหมดอยู่ในโค้ดลูปกริดไฟล์ home.php:
<?php remove_action( 'genesis_loop', 'genesis_do_loop' ); add_action( 'genesis_loop', 'eleven40_grid_loop_helper' ); /** Add support for Genesis Grid Loop */ function eleven40_grid_loop_helper() { <pre><code>if ( function_exists( 'genesis_grid_loop' ) ) { genesis_grid_loop( array( 'features' => 1, 'feature_image_size' => 0, 'feature_image_class' => 'alignleft post-image', 'feature_content_limit' => 0, 'grid_image_size' => 'grid-featured', 'grid_image_class' => 'grid-featured', 'grid_content_limit' => 250, 'more' => __( '[Continue reading]', 'eleven40' ), 'posts_per_page' => 5, ) ); } else { genesis_standard_loop(); } </code></pre> } genesis();
โค้ด PHP ด้านบนถูกตั้งค่าให้แสดง 5 โพสต์ เริ่มต้นด้วยโพสต์เด่นหนึ่งโพสต์ซึ่งแสดงความกว้างของเนื้อหาแบบเต็มและไม่จำกัดเนื้อหาโดยตั้งค่าเป็น 0 เพื่อแสดงเนื้อหาโพสต์แบบเต็มของโพสต์แรก
จากนั้นจะแสดง 4 โพสต์ในตารางโดยแต่ละชุดมีเนื้อหาไม่เกิน 250 รายการพร้อมรูปภาพเด่น หากคุณได้อัปโหลดหนึ่งรายการสำหรับแต่ละโพสต์และตั้งเป็นรูปภาพเด่น
การตั้งค่าเหล่านี้ถูกเขียนทับโดยการตั้งค่าการอ่าน ซึ่งหมายความว่าหากการตั้งค่าการอ่านของคุณถูกตั้งค่าให้แสดง 20 โพสต์ นั่นคือสิ่งที่หน้าแรกของคุณจะแสดงโดยไม่คำนึงถึงการตั้งค่าในลูปกริดด้านบน
ในการปรับแต่ง คุณสามารถใช้โค้ด PHP ด้านล่างนี้ในไฟล์ functions.php ธีมลูกของคุณเพื่อเขียนทับการตั้งค่าการอ่านสำหรับกริดลูปของคุณ ดังนั้นจึงใช้การตั้งค่าการอ่านเพื่อควบคุมจำนวนโพสต์ที่แสดงบนหน้าเก็บถาวรทั้งหมดของคุณ
เปลี่ยนขีดจำกัดการโพสต์แบบวนซ้ำของกริด
add_action( 'pre_get_posts', 'change_num_posts_in_grid' ); function change_num_posts_in_grid( $query ) { global $wp_the_query; if( $query->is_main_query() && is_home() ) { $query->set( 'posts_per_page', '5' ); } }
โค้ดด้านบนนี้ยังสามารถแก้ไขให้ทำงานบนเพจอื่นๆ โดยใช้ grid loop ได้ง่ายๆ โดยการเปลี่ยนแท็กแบบมีเงื่อนไขในโค้ดจาก is_home() เป็นอย่างอื่น
หน้าย่อยของหน้าแรก
หากคุณต้องการควบคุมจำนวนโพสต์ที่แสดงในหน้าย่อยสำหรับตารางหรือข้อความที่ตัดตอนมามาตรฐาน คุณสามารถใช้โค้ดดังนี้:
add_action( 'pre_get_posts', 'change_num_posts_in_grid' ); function change_num_posts_in_grid( $query ) { global $wp_the_query; if( $query->is_main_query() && is_home() && is_paged() ) { $query->set( 'posts_per_page', '5' ); } }
เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ Genesis Grid Loop สำหรับเค้าโครงโพสต์หน้าแรกที่แตกต่างกัน
เปลี่ยนการจำกัดเนื้อหาสำหรับหมวดหมู่เฉพาะ
คุณยังสามารถเขียนทับการตั้งค่าการอ่านของ WordPress และกำหนดขีดจำกัดของข้อความที่ตัดตอนมาในที่เก็บถาวรใด ๆ รวมถึงที่เก็บถาวรที่บ้าน ผู้เขียน บล็อก หมวดหมู่ การค้นหา และหน้าแท็ก
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(is_category('29') ) { return 20; } }
รหัสด้านบนจะเปลี่ยนความยาวข้อความที่ตัดตอนมาในหน้าหมวดหมู่ด้วยรหัส 29 เป็นจำกัด 20 คำ
คุณยังสามารถเพิ่มกลับแท็กการจัดรูปแบบ HTML ที่ตัดตอนมาจากข้อความที่ตัดตอนมาโดย WordPress
ยิ่งไปกว่านั้น คุณสามารถใช้โค้ดด้านล่างนี้เพื่อควบคุมการจำกัดเนื้อหาของข้อความที่ตัดตอนมาในไฟล์เก็บถาวรเฉพาะ แล้วตั้งค่าอื่นๆ ให้แสดงขีดจำกัดที่ตั้งไว้ หมายเหตุ: ต้องตั้งค่า Genesis > Theme Settings > Content archive ให้แสดง Excerpts ไม่ใช่ Content Limit
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category('web-design') ) { return 20; } else { return 500; } }
โค้ดด้านบนแสดงขีดจำกัดเนื้อหาสำหรับข้อความที่ตัดตอนมาในหมวดหมู่การออกแบบเว็บที่ 20 และไฟล์เก็บถาวรอื่นๆ ทั้งหมดแสดงขีดจำกัด 500 รายการ
นี่คือโค้ด PHP บางส่วนที่มีอาร์เรย์ของหลายประเภท:
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category(array( 153,154,156 ) ) ) { return 100; } else { return 300; } }
รหัสนี้ใช้รหัสหมวดหมู่และแสดงขีด จำกัด เนื้อหา 100 สำหรับ 3 หมวดหมู่ ไฟล์เก็บถาวรอื่นๆ ทั้งหมดแสดงขีดจำกัด 300
เรียนรู้เพิ่มเติมเกี่ยวกับการปรับแต่งข้อความที่ตัดตอนมา
ประเภทโพสต์ที่กำหนดเอง (CPT)
นี่คือรหัสที่กำหนดจำนวนโพสต์ในประเภทโพสต์แบบกำหนดเองที่จะแสดงในหน้าเก็บถาวรของ CPT:
add_action( 'pre_get_posts', 'cpt_archive_items_limit' ); function cpt_archive_items_limit( $query ) { <pre><code>if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'your-cpt' ) ) { $query->set( 'posts_per_page', '3' ); } </code></pre> }
เพียงแทนที่ your-cpt ในโค้ดด้านบนด้วยชื่อประเภทโพสต์ที่คุณกำหนดเอง
บทสรุป
คุณสามารถเห็นได้ด้วยตัวเองว่าการใช้ WordPress hooks และตัวกรองนั้นทำงานได้อย่างสมบูรณ์ใน Genesis
โซลูชั่นที่คล้ายกัน
- การตั้งค่าให้แสดงข้อความที่ตัดตอนมาบนเทมเพลตหน้าเอกสารใดๆ
- รหัสเพื่อกำหนดขีด จำกัด การเก็บถาวรเนื้อหาของ Genesis
- แสดงเนื้อหาโพสต์แบบเต็มหรือข้อความที่ตัดตอนมาในหน้าเก็บถาวรเฉพาะ
- ปรับแต่งหน้าเก็บถาวรแบบมีเงื่อนไขโดยใช้ Pre Get Posts
- แสดงข้อความที่ตัดตอนมาบนหน้าบล็อกและเนื้อหาทั้งหมดในคลังเก็บอื่นๆ ในปฐมกาล