RSS
RSS

Paginacja własnych pętli WordPressa we frameworku Genesis


Kategorie: Tworzenie stron, WordPress, Wszystkie

3

We frameworku Genesis z jakiegoś powodu używanie własnej pętli w home.php nie działa, tzn. druga i kolejne poza pierwszą strony paginacji dają błąd 404 not found.

Problem ten występuje często – jest wiele zapytań o niego w internecie, natomiast żadnych konkretnych rozwiązań. Przyczyna problemu nie jest znana. Ogólnie framework ten jest fatalny – niesamowicie komplikuje prosty i wydajny system szablonów WordPressa.

Najprostszym rozwiązaniem jest zastosowanie własnej strony błędu i usunięcie z ustawień WordPressa przypisania podstrony bloga w sekcji Ustawienia → Czytanie (należy ustawić na –Wybierz–).

Plik php z pętlą należy nazwać inaczej, niż home.php (np. page-artykuly.php) i w jego pierwszej linii wpisać:

<?php /* Template Name: Artykuly */

Następnie w ustawieniach podstrony Artykuły należy wybrać szablon o nazwie Artykuly. Wtedy paginacja powinna działać poprawnie.

Poniżej zamieszczam orientacyjny kod pliku page-artykuly.php (źródło).

<?php
/* Template Name: Artykuly */
/**
* Genesis custom loop
*/
function be_custom_loop() {
global $post;
// arguments, adjust as needed
$args = array(
‘post_type’ => ‘post’,
‘posts_per_page’ => 1,
‘post_status’ => ‘publish’,
‘paged’ => get_query_var( ‘paged’ )
);
/*
Overwrite $wp_query with our new query.
The only reason we’re doing this is so the pagination functions work,
since they use $wp_query. If pagination wasn’t an issue,
use: https://gist.github.com/3218106
*/
global $wp_query;
$wp_query = new WP_Query( $args );
if ( have_posts() ) :
echo ‘<ul>’;
while ( have_posts() ) : the_post();
echo ‘<li>’ . get_the_title() . ‘</li>’;
endwhile;
echo ‘</ul>’;
do_action( ‘genesis_after_endwhile’ );
endif;
wp_reset_query();
}
add_action( ‘genesis_loop’, ‘be_custom_loop’ );
remove_action( ‘genesis_loop’, ‘genesis_do_loop’ );
genesis();

Komentarze

Nie ma to jak komplikacja rzeczy prostych… Właśnie się nad tym głowiłem..

nie wiedziałem że jest to aż tak skomplikowane

Kod działa świetnie. ;)

Komentuj

Subscribe without commenting