ตั้งค่าการจำกัดการโพสต์และเนื้อหาสำหรับหน้าแรก บล็อก & หน้าเก็บถาวร

เผยแพร่แล้ว: 2013-08-15

ในบทช่วยสอนนี้ เราจะดูการตั้งค่า Genesis ในตัวที่คุณสามารถใช้เพื่อควบคุมการจำกัดเนื้อหาในไฟล์เก็บถาวรและเทมเพลตหน้าบล็อกของคุณ

นอกจากนี้ เราจะพิจารณาการตั้งค่าการอ่านของ WordPress และผลกระทบต่อการตั้งค่า Genesis

นอกจากนี้ เรายังจะดูข้อมูลโค้ดบางส่วนที่คุณสามารถใช้เพื่อปรับแต่งของคุณเพิ่มเติม:

  1. หน้าบล็อก
  2. หอจดหมายเหตุ
  3. หน้าแรก
  4. วงกริด
  5. ประเภทโพสต์ที่กำหนดเอง

เราจะใช้ธีมลูก Eleven40 Pro ใหม่โดย StudioPress รวมถึงธีมย่อยของ Genesis 2.0 Sample ซึ่งไม่รวมกริดลูปหรือวิดเจ็ตโฮมเพจที่แกะกล่อง

ธีม Eleven40 Pro ร่วมกับธีม StudioPress อื่นๆ เช่น ธีม Balance รวมถึงกริดแบบวนซ้ำในไฟล์ home.php

การตั้งค่าการอ่านใน WordPress

ประการแรก ให้ดูที่การตั้งค่าที่มีอยู่ที่ WordPress มีให้ในการตั้งค่าการอ่าน การตั้งค่าเหล่านี้จะส่งผลต่อจำนวนโพสต์ที่แสดงในหน้าเก็บถาวรทั้งหมดของคุณ รวมถึง:

  • หน้ารายการ บล็อก
  • หน้าเอกสาร รวมถึงหน้าผู้เขียน บล็อก หมวดหมู่ การค้นหา และแท็ก

การตั้งค่าการอ่าน wp

การตั้งค่าการอ่านกำหนดจำนวนโพสต์ที่จะแสดงในหน้าเอกสารและโฮมเพจทั้งหมดของคุณ หากปล่อยไว้ที่การตั้งค่าเริ่มต้นดังที่คุณเห็นในภาพหน้าจอด้านบน

การตั้งค่าการอ่านไม่ได้ควบคุมหน้าบล็อกของคุณ เนื่องจากถูกควบคุมโดยการตั้งค่าเทมเพลตหน้าบล็อกที่ 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() &amp;&amp; $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-&gt;set( 'posts_per_page', 1 ); return $query; </code></pre> }}

การกำหนดขีดจำกัดการโพสต์แบบวนซ้ำของกริดบนโฮมเพจ

หากธีมของคุณมีกริดลูปในไฟล์ home.php คุณก็สามารถควบคุมจำนวนโพสต์เด่นแบบเต็มความกว้างและจำนวนโพสต์ลูปกริดที่จะแสดงบนโฮมเพจของคุณ

นอกจากนี้ คุณยังสามารถควบคุมการจำกัดเนื้อหาสำหรับทั้งบทความเด่นและโพสต์ที่แสดงในตารางบนหน้าแรกเท่านั้น เนื่องจากโค้ดจะรวมอยู่ในไฟล์ home.php

การตั้งค่าทั้งหมดอยู่ในโค้ดลูปกริดไฟล์ home.php:

 &lt;?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' =&gt; 1, 'feature_image_size' =&gt; 0, 'feature_image_class' =&gt; 'alignleft post-image', 'feature_content_limit' =&gt; 0, 'grid_image_size' =&gt; 'grid-featured', 'grid_image_class' =&gt; 'grid-featured', 'grid_content_limit' =&gt; 250, 'more' =&gt; __( '[Continue reading]', 'eleven40' ), 'posts_per_page' =&gt; 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() &amp;&amp; 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() &amp;&amp; is_home() &amp;&amp; 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 คำ

หมายเหตุ: โค้ดด้านบนใช้งานได้เฉพาะเมื่อคุณได้ตั้งค่า Genesis > Theme Settings > Content Archive > Display Post Excerpts และจะไม่ทำงานหากคุณใช้การตั้งค่า Display Post Content

คลังเนื้อหา - แสดงข้อความที่ตัดตอนมาของโพสต์

คุณยังสามารถเพิ่มกลับแท็กการจัดรูปแบบ 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-&gt;is_main_query() &amp;&amp; !is_admin() &amp;&amp; is_post_type_archive( 'your-cpt' ) ) { $query-&gt;set( 'posts_per_page', '3' ); } </code></pre> }

เพียงแทนที่ your-cpt ในโค้ดด้านบนด้วยชื่อประเภทโพสต์ที่คุณกำหนดเอง

บทสรุป

คุณสามารถเห็นได้ด้วยตัวเองว่าการใช้ตะขอและตัวกรองของ WordPress ยังทำงานได้ดีใน Genesis

โซลูชั่นที่คล้ายกัน

  • การตั้งค่าให้แสดงข้อความที่ตัดตอนมาบนเทมเพลตหน้าเอกสารใดๆ
  • รหัสเพื่อกำหนดขีด จำกัด การเก็บถาวรเนื้อหาของ Genesis
  • แสดงเนื้อหาโพสต์แบบเต็มหรือข้อความที่ตัดตอนมาในหน้าเก็บถาวรเฉพาะ
  • ปรับแต่งหน้าเก็บถาวรแบบมีเงื่อนไขโดยใช้ Pre Get Posts
  • แสดงข้อความที่ตัดตอนมาบนหน้าบล็อกและเนื้อหาทั้งหมดในคลังเก็บอื่นๆ ในปฐมกาล