Setați limite de postare și conținut pentru paginile de pornire, blog și arhivă
Publicat: 2013-08-15În acest tutorial, vom arunca o privire asupra setărilor încorporate ale Genesis pe care le puteți utiliza pentru a controla limitele de conținut din arhivele și șablonul de pagină de blog.
De asemenea, vom lua în considerare setările de citire WordPress și modul în care acestea afectează setările Genesis.
În plus, vom analiza și câteva fragmente de cod de lucru pe care le puteți folosi pentru a personaliza și mai mult:
- Pagina de blog
- Arhive
- pagina principala
- Bucla grilă
- Tipuri de postări personalizate
Vom folosi noua temă copil Eleven40 Pro de la StudioPress, precum și temă copil Genesis 2.0 Sample, care nu include nicio buclă grilă sau widget-uri din pagina de pornire din cutie.
Tema Eleven40 Pro împreună cu alte câteva teme StudioPress, cum ar fi tema Balance, includ o buclă de grilă personalizată în fișierul home.php.
Setări de citire în WordPress
În primul rând, să ne uităm la setările existente pe care WordPress le oferă în Setările de citire. Aceste setări vor afecta numărul de postări afișate pe toate paginile arhivei, inclusiv:
- Pagina cu liste de blog
- Pagini de arhivare, inclusiv pagini de autor, blog, categorii, căutare și etichete
Setările de citire determină câte postări sunt afișate pe toate paginile arhivelor și pe pagina de pornire dacă sunt lăsate la setările implicite, așa cum vedeți în captura de ecran de mai sus.
Setările de citire NU controlează pagina dvs. de blog, deoarece aceasta este controlată de setările șablonului de pagină de blog pe care Genesis le include în setările Genesis > Tema:
Să ne uităm la un exemplu în acest sens: dacă setările dvs. de citire sunt setate să afișeze 5 postări, pagina dvs. de pornire și toate arhivele vor afișa 5 postări, dar pagina dvs. de blog va afișa orice ați setat să afișeze.
Chiar dacă setările de citire ar putea fi setate la: Paginile de blog afișează cel mult 5, acest lucru se aplică numai paginii de pornire și NU atunci când utilizați o pagină personalizată statică cu șablonul de pagină de blog pentru pagina dvs. de blog personalizată.
Aceste setări sunt controlate de setările șablonului de pagină de blog Genesis, așa cum se arată în captura de ecran de mai sus.
Personalizarea limita de postare implicită a paginii de pornire
Dacă doriți ca arhivele dvs. să afișeze numărul setat în Setările de citire, dar să afișeze un număr diferit de postări pe pagina dvs. de pornire, va trebui să utilizați un cod personalizat în fișierul functions.php pentru temele copilului:
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> }
Codul de mai sus nu va afecta numărul de postări afișate în arhivele dvs.
Schimbați numărul de postări afișate în arhive
De asemenea, puteți utiliza acest cod pentru a modifica câte postări sunt afișate în diferite arhive, cum ar fi paginile de arhivă a categoriilor și a autorului, fără a afecta Setările de citire care le controlează pe celelalte:
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> }}
Personalizarea limitei de postare a buclei de grilă pe pagina de pornire
Dacă tema dvs. include o buclă grilă în fișierul home.php, puteți controla pur și simplu câte postări prezentate cu lățime completă și câte postări în buclă grilă sunt afișate pe pagina dvs. de pornire.
În plus, puteți controla limita de conținut atât pentru postările prezentate, cât și pentru postările afișate în grilă doar pe pagina de pornire, deoarece codul este inclus în fișierul home.php.
Toate setările sunt în codul buclei de grilă a fișierului 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();
Codul PHP de mai sus este setat să afișeze 5 postări. Începând cu o postare recomandată care afișează lățimea completă a conținutului și o limită de conținut nelimitată, setată la 0, astfel încât să afișeze conținutul complet al postării primei postări.
Apoi afișează 4 postări într-o grilă, fiecare setată la o limită de conținut de 250 cu imaginea prezentată, dacă ați încărcat una pentru fiecare postare și ați setat-o ca imagine recomandată.
Aceste setări sunt suprascrise de Setări de citire, adică dacă Setările de citire sunt setate să afișeze 20 de postări, aceasta este ceea ce va afișa pagina de pornire indiferent de setările din bucla grilă de mai sus.
Pentru a personaliza acest lucru, puteți folosi acest cod PHP de mai jos în fișierul functions.php pentru temele copilului pentru a suprascrie setările de citire pentru bucla grilă și, prin urmare, utilizați Setările de citiri pentru a controla câte postări sunt afișate pe toate paginile dvs. de arhivă.
Modificați limita de postări în buclă grilă
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' ); } }
Codul de mai sus poate fi modificat și pentru a funcționa pe orice alte pagini folosind bucla grilă pur și simplu schimbând eticheta condiționată din cod de la is_home() la altceva.
Subpaginile paginii de pornire
Dacă doriți, de asemenea, să controlați numărul de postări afișate pe subpagini pentru grilă sau extrase standard, puteți utiliza cod ca acesta:
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' ); } }
Aflați mai multe despre utilizarea buclei de grilă Genesis pentru diferite aspecte ale postărilor de acasă.
Modificați limita de conținut pentru o anumită categorie
De asemenea, puteți suprascrie setările de citire WordPress și personalizați limita de extrase pentru orice arhivă, inclusiv arhivele dvs. de acasă, autor, blog, categorii, căutare și etichetare.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(is_category('29') ) { return 20; } }
Codul de mai sus va modifica lungimea extrasului de pe pagina categoriei cu un ID de 29 la o limită de 20 de cuvinte.
De asemenea, puteți adăuga înapoi etichete de formatare HTML extrase din fragmente de WordPress.
În plus, puteți utiliza acest cod de mai jos pentru a controla limita de conținut a extraselor din anumite arhive și apoi, de asemenea, pentru a seta pe alții să afișeze o limită stabilită. Notă: Genesis > Setările temei > Arhivele de conținut trebuie setate să afișeze Extrase și nu Limită de conținut.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category('web-design') ) { return 20; } else { return 500; } }
Codul de mai sus afișează o limită de conținut pentru extrasele din categoria design web de 20 și toate celelalte arhive afișează o limită de 500.
Iată un cod PHP care include o serie de mai multe categorii:
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; } }
Acest cod folosește ID-urile categoriei și afișează o limită de conținut de 100 pentru 3 categorii. Toate celelalte arhive afișează o limită de 300.
Aflați mai multe despre personalizarea fragmentelor.
Tip de postare personalizat (CPT)
Iată codul care determină câte postări dintr-un tip de postare personalizat sunt afișate pe pagina de arhivă a 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> }
Pur și simplu înlocuiți-vă-cpt în codul de mai sus cu numele tipului de postare personalizat.
Concluzie
Puteți vedea singuri că utilizarea cârligelor și filtrelor WordPress funcționează perfect și în Genesis.
Soluții similare
- Setarea pentru afișarea extraselor de intrare pe orice șablon de pagină de arhivă
- Cod pentru a seta limita pentru arhiva de conținut Genesis
- Afișați conținutul complet al postării sau extrase pe anumite pagini de arhivă
- Personalizați paginile de arhivă în mod condiționat utilizând postări pre-obține
- Afișați fragmente pe pagina de blog și conținut complet pe alte arhive din Genesis