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

เผยแพร่แล้ว: 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> }}

การกำหนดขีด จำกัด การโพสต์ Grid Loop บนโฮมเพจ

หากธีมของคุณมีกริดลูปในไฟล์ 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 hooks และตัวกรองนั้นทำงานได้อย่างสมบูรณ์ใน Genesis

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

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