Ustaw limity postów i treści dla stron domowych, blogów i archiwum

Opublikowany: 2013-08-15

W tym samouczku przyjrzymy się wbudowanym ustawieniom Genesis, których możesz użyć do kontrolowania limitów zawartości w twoich archiwach i szablonie strony bloga.

Weźmiemy również pod uwagę ustawienia czytania WordPressa i ich wpływ na ustawienia Genesis.

Oprócz tego przyjrzymy się również działającym fragmentom kodu, których możesz użyć do dalszego dostosowania:

  1. Strona bloga
  2. Archiwa
  3. Strona główna
  4. Pętla siatki
  5. Niestandardowe typy postów

Użyjemy nowego motywu potomnego Eleven40 Pro od StudioPress, a także motywu potomnego Genesis 2.0 Sample, który nie zawiera żadnej pętli siatki ani widżetów strony głównej po wyjęciu z pudełka.

Motyw Eleven40 Pro wraz z kilkoma innymi motywami StudioPress, takimi jak motyw Balance, zawiera niestandardową pętlę siatki w pliku home.php.

Ustawienia czytania w WordPressie

Najpierw przyjrzyjmy się istniejącym ustawieniom, które WordPress zapewnia w Ustawieniach czytania. Te ustawienia wpłyną na liczbę postów wyświetlanych na wszystkich stronach archiwum, w tym:

  • Strona z listami blogów
  • Archiwizuj strony , w tym strony autora, bloga, kategorii, wyszukiwania i tagów

ustawienia czytania wp

Ustawienia czytania określają, ile postów jest wyświetlanych na wszystkich stronach archiwów i stronie głównej, jeśli pozostawisz je na domyślnych ustawieniach, jak widać na powyższym zrzucie ekranu.

Ustawienia czytania NIE kontrolują strony twojego bloga, ponieważ jest to kontrolowane przez ustawienia szablonu strony blogu, które Genesis zawiera w Genesis > Ustawienia motywu:

szablon strony blog genesis

Spójrzmy na taki przykład: Jeśli w ustawieniach czytania ustawiono wyświetlanie 5 postów, na Twojej stronie głównej i wszystkich archiwach będzie wyświetlanych 5 postów, jednak na Twojej stronie bloga będzie wyświetlane wszystko, co ustawisz.

Mimo że ustawienia Czytanie mogą być ustawione na: Strony bloga wyświetlają maksymalnie 5, dotyczy to tylko strony głównej, a NIE używania statycznej strony niestandardowej z szablonem strony blogu dla niestandardowej strony bloga.

Te ustawienia są kontrolowane przez ustawienia szablonu strony bloga genesis, jak pokazano na powyższym zrzucie ekranu.

Dostosowywanie domyślnego limitu postów na stronie głównej

Jeśli chcesz, aby Twoje archiwa wyświetlały liczbę ustawioną w Ustawieniach czytania, ale wyświetlały inną liczbę postów na Twojej stronie głównej, będziesz musiał użyć niestandardowego kodu w pliku podrzędnych motywów 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> }

Powyższy kod nie wpłynie na liczbę postów wyświetlanych w Twoich archiwach.

Zmień liczbę postów wyświetlanych w archiwach

Możesz również użyć tego kodu, aby zmienić liczbę postów wyświetlanych w różnych archiwach, takich jak strony archiwum kategorii i autora, bez wpływu na ustawienia czytania, które kontrolują pozostałe:

 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> }}

Dostosowywanie limitu słupków pętli siatki na stronie głównej

Jeśli Twój motyw zawiera pętlę siatki w pliku home.php, możesz po prostu kontrolować liczbę polecanych postów o pełnej szerokości i liczbę postów w pętli siatki wyświetlanych na Twojej stronie głównej.

Oprócz tego możesz również kontrolować limit zawartości zarówno polecanych postów, jak i postów wyświetlanych w siatce tylko na stronie głównej, ponieważ kod jest zawarty w pliku home.php.

Wszystkie ustawienia znajdują się w kodzie pętli siatki pliku 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();

Powyższy kod PHP jest ustawiony na wyświetlanie 5 postów. Zaczynając od jednego polecanego posta, który wyświetla pełną szerokość treści i nieograniczony limit treści jako ustawiony na 0, więc wyświetla pełną treść pierwszego posta.

Następnie wyświetla 4 posty w siatce z każdym zestawem przy limicie zawartości 250 z wyróżnionym obrazem, jeśli przesłałeś jeden dla każdego posta i ustawiłeś go jako wyróżniony obraz.

Te ustawienia są zastępowane przez ustawienia czytania, co oznacza, że ​​jeśli twoje ustawienia czytania są ustawione na wyświetlanie 20 postów, to właśnie będzie wyświetlana twoja strona główna niezależnie od ustawień w powyższej pętli siatki.

Aby to dostosować, możesz użyć poniższego kodu PHP w pliku motywów podrzędnych functions.php, aby nadpisać ustawienia czytania dla pętli siatki, a zatem użyć Ustawień odczytów, aby kontrolować, ile postów jest wyświetlanych na wszystkich stronach archiwum.

Zmień limit słupków pętli siatki

 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' ); } }

Powyższy kod można również zmodyfikować, aby działał na dowolnych innych stronach za pomocą pętli siatki, po prostu zmieniając tag warunkowy w kodzie z is_home() na coś innego.

Podstrony strony głównej

Jeśli chcesz również kontrolować liczbę postów wyświetlanych na podstronach dla siatki lub standardowych fragmentów, możesz użyć kodu takiego:

 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' ); } }
Uwaga : Jeśli twoja strona główna używa siatki, archiwa tych podstron również będą wyświetlane w siatce.

Dowiedz się więcej o używaniu pętli siatki Genesis do różnych układów postów domowych.

Zmień limit zawartości dla określonej kategorii

Możesz także nadpisać ustawienia czytania WordPressa i dostosować limit fragmentów w dowolnym archiwum, w tym w archiwum domowym, autorze, blogu, kategorii, wyszukiwaniu i tagowaniu stron.

 add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(is_category('29') ) { return 20; } }

Powyższy kod zmieni długość fragmentu na stronie kategorii z identyfikatorem 29 na limit 20 słów.

Uwaga: Powyższy kod działa tylko wtedy, gdy ustawisz Genesis > Ustawienia motywu > Archiwa treści > Wyświetl fragmenty postów i nie będzie działać, jeśli użyjesz ustawienia Wyświetl zawartość posta.

archiwum treści - wyświetlaj fragmenty postów

Możesz także dodać z powrotem tagi formatowania HTML usunięte z fragmentów przez WordPress.

Ponadto możesz użyć tego kodu poniżej, aby kontrolować limit zawartości fragmentów w określonych archiwach, a także ustawić inne, aby wyświetlały określony limit. Uwaga: Twoja Genesis > Theme Settings > Content Archives musi być ustawiona na wyświetlanie fragmentów, a nie limitu zawartości.

 add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category('web-design') ) { return 20; } else { return 500; } }

Powyższy kod wyświetla limit treści dla fragmentów w kategorii projektowania stron internetowych wynoszący 20, a wszystkie inne archiwa wyświetlają limit 500.

Oto trochę kodu PHP, który zawiera tablicę wielu kategorii:

 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; } }

Ten kod używa identyfikatora kategorii i wyświetla limit zawartości wynoszący 100 dla 3 kategorii. Wszystkie inne archiwa wyświetlają limit 300.

Dowiedz się więcej o dostosowywaniu fragmentów.

Niestandardowy typ postu (CPT)

Oto kod, który określa, ile postów w niestandardowym typie postów jest wyświetlanych na stronie archiwum 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> }

Po prostu zastąp swój-cpt w powyższym kodzie nazwą niestandardowego typu postu.

Wniosek

Sami możecie się przekonać, że korzystanie z hooków i filtrów WordPressa działa również doskonale w Genesis.

Podobne rozwiązania

  • Ustawienie wyświetlania fragmentów wpisów w dowolnym szablonie strony archiwum
  • Kod do ustawienia limitu archiwum zawartości Genesis
  • Wyświetlaj pełną treść posta lub fragmenty na określonych stronach archiwum
  • Warunkowe dostosowywanie stron archiwum za pomocą funkcji Pre Get Post
  • Wyświetlaj fragmenty na stronie bloga i pełną treść w innych archiwach w Genesis