Wsparcie » Motywy » Paginacja nie działa

  • Witam was 🙂
    Mam problem z włączeniem paginacji w szablonie który opracowuje.
    Dopiero się uczę i nie bardzo wiem jak rozwiązać ten problem.
    Otóż mój plik index.php wygląda tak:

    <?php get_header(); ?>
    
    	<main role="main">
    	<div class="breadcrumb"> Jesteś na stronie głównej! </div>
    		<!-- section -->
    		<section>
    
    			<?php
    			global $more;
    			$more = 0;
    			query_posts('cat=-3');
    			get_template_part('loop'); ?>
    
    			<?php get_template_part('pagination'); ?>
    
    		</section>
    		<!-- /section -->
    	</main>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>

    i już zauważyłem, że paginacja nie działa z powodu tych trzech linijek :

    global $more;
    $more = 0;
    query_posts('cat=-3');

    Fragment kodu odpowiedzialny za paginację wygląda tak:

    function pagination()
    {
        global $wp_query;
        $big = 999999999;
        echo paginate_links(array(
            'base' => str_replace($big, '%#%', get_pagenum_link($big)),
            'format' => '?paged=%#%',
            'current' => max(1, get_query_var('paged')),
            'total' => $wp_query->max_num_pages
        ));
    }

    czy pomoże mi ktoś rozwiązać ten problem? Uprzedzam, że bardzo zależy mi, żeby dana kategoria nie wyświetlała się na stronie głównej 🙂

Viewing 15 replies - 1 through 15 (of 17 total)
  • wina query_posts – nie przekazujesz pozostałychwartości.
    Zmień np. na

    global $wp_query;
    $args = array_merge( $wp_query->query_vars, array( 'cat' => '-3' ) );
    query_posts( $args );

    Thread Starter NYCZu

    (@nyczu)

    dzięki wielkie .. pomogło:)

    Thread Starter NYCZu

    (@nyczu)

    a jednak mam jeszcze jeden problem

    zrobiłem sobie szablon strony (page template) na której wyświetlały się wpisy z kategorii którą zablokowałem na głównej .. I tam też mi jest potrzebna paginacja, ale nie działa już tym sposobem który podał wyżej adpawl

    <?php /* Template Name: PageABC */ get_header(); ?>
    
    	<main role="main">
    		<div class="breadcrumb"> Jesteś tutaj: <?php the_breadcrumb(); ?> </div>
    		<!-- section -->
    		<section>
    
    			<div class="pagetittle" style="text-align: center; margin-bottom: 10px;"><?php the_title(); ?></div>
    
    		<?php
    			//global $more;
    			//$more = 0;
    			//query_posts('cat=3');
    
    			global $wp_query;
    			$args = array_merge( $wp_query->query_vars, array( 'cat' => '3' ) );
    			query_posts( $args ); 
    
    			if(have_posts()) :
    			while(have_posts()) :the_post();
    		?>
    
    	<!-- article -->
    	<!-- post title -->
    	<div class="tittle">
    		<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    	</div>
    	<div class="afterh2"><img src="<?php bloginfo('template_directory'); ?>/img/afterh2.png"></div>
    	<!-- /post title -->
    	<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    
    		<!-- post thumbnail -->
    		<?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
    			<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
    				<?php the_post_thumbnail(array(120,120)); // Declare pixel size you need inside the array ?>
    			</a>
    		<?php endif; ?>
    		<!-- /post thumbnail -->
    
    		<?php the_content('Czytaj dalej...'); // Build your custom callback length in functions.php ?>
    
    	</article>
    	<!-- /article -->
    
    <?php endwhile; ?>
    
    <?php else: ?>
    
    	<!-- article -->
    	<article>
    		<h2><?php _e( 'Sorry, nothing to display.', 'html5blank' ); ?></h2>
    	</article>
    	<!-- /article -->
    
    <?php endif; ?>
    
    		<?php get_template_part('pagination'); ?>
    
    		</section>
    		<!-- /section -->
    	</main>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>

    kod tej templatki .. reszta się nie zmieniła ..

    wywalasz cały ten kawałek dot. query_posts – bo przecież nie chcesz zmieniać zapytania, oraz get_template_part dołączający paginację.

    Thread Starter NYCZu

    (@nyczu)

    chyba coś zle robie .. kawałek

    //global $more;
    //$more = 0;
    //query_posts('cat=3');

    jest zakomentowany ale go wywaliłem

    mam wywalic jeszcze to? :

    global $wp_query;
    $args = array_merge( $wp_query->query_vars, array( 'cat' => '3' ) );
    query_posts( $args );

    wtedy wyświetli mi chyba wszystkie posty, a ja chce tylko tą jedną kategorię.
    No i jak jest tylko to co wyzej to wyswietla mi komunikat który jest na dole templatki : 'Sorry, nothing to display.’

    No i dlaczego mam wywalić kawałek od paginacji skoro chcę ją mieć ..

    Jak coś to jest szablon do strony statycznej ..

    Mogłem nie doczytać. Zasugerowałem się „szablonem strony”
    Pytanie, dlaczego kombinujesz zamiast użyć po prostu kategorii?

    Thread Starter NYCZu

    (@nyczu)

    ponieważ chciałem dodać jedną rzecz przed tymi newsami. Dodanie jej przez edycje pliku kategorii nie będzie dobre, bo będzie widoczne przed każdą kategorią ..

    No i nie wiem co jest nie tak z tą paginacją, ale w podglądzie kategorii też ona nie działa

    strona jest pod tym adresem

    strona na której chce coś dodać przed newsami w menu kryje się pod nazwa ABC Strażaka.. jest tam wstępnie pokazane ocb..

    PS. Paginacja jeszcze nie jest ostylowana ..

    Jak chcesz dodać coś przed wpisami dla jakiejś wybranej kategorii, to najlepiej bezinwawzyjnie zrobić to np. akcją w pliku functions.php

    add_action('loop_start', 'dodajemy_cos');
    function dodajemy_cos(){
    	if(is_category('wybranakategoria')) { echo 'DODANE COŚ'; }
    }

    Możesz tez użyć conditionali czyli np. warunek z is_category()

    Ewentualnie tworzysz dla kategorii szablon, przykładowo category-3.php – a w nim używasz tylko standardowago loopa, bez żadnych kombinacji z query_posts.

    Zasadniczo polecam lekturę:
    http://codex.wordpress.org/Template_Hierarchy
    http://codex.wordpress.org/The_Loop_in_Action
    oraz zerknąć na kod jakiegoś gotowego motywu

    Thread Starter NYCZu

    (@nyczu)

    przeczytałem sobie treść w obu linkach 🙂 Dzięki za podesłanie ..
    przejrzałem też kilka innych motywów .. mam problem (mam nadzieję, że ostatni) z paginacją kategorii ..

    <?php get_header(); ?>
    
    	<main role="main">
    
    		<div class="breadcrumb" style="margin-top: 20px"> Jesteś tutaj: <?php the_breadcrumb(); ?> </div>
    
    		<!-- section -->
    		<section>
    
    			<?php get_template_part('loop'); ?>
    
    			<?php get_template_part('pagination'); ?>
    
    		</section>
    		<!-- /section -->
    	</main>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>

    Tak wygląda kod w pliku category.php i standardowo, paginacja ta sama co w pierwszym poście .. Mimo to nie działa ..

    podsyłam linka żebyś mógł zobaczyć : Kategoria 3

    problem polega na tym, że mimo że klika następne, adres w pasku adresu w przeglądarce zmienia się, strona pozostaje ta sama ..

    a co masz w pliku loop.php?

    Thread Starter NYCZu

    (@nyczu)

    <?php
     if (have_posts()): while (have_posts()) : the_post(); ?>
    
    	<!-- article -->
    	<!-- post title -->
    	<div class="tittle">
    		<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    	</div>
    	<div class="afterh2"><img src="<?php bloginfo('template_directory'); ?>/img/afterh2.png"></div>
    	<!-- /post title -->
    	<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    
    		<!-- post thumbnail -->
    		<?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
    			<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" style="float: left">
    				<?php the_post_thumbnail(array(120,120)); // Declare pixel size you need inside the array ?>
    			</a>
    		<?php endif; ?>
    		<!-- /post thumbnail -->
    
    		<?php the_content('Czytaj dalej...'); // Build your custom callback length in functions.php ?>
    		<div style="clear: both;"> <!--cos--> </div>
    
    	</article>
    	<!-- /article -->
    
    <?php endwhile; ?>
    
    <?php else: ?>
    
    	<!-- article -->
    	<article>
    		<h2><?php _e( 'Sorry, nothing to display.', 'html5blank' ); ?></h2>
    	</article>
    	<!-- /article -->
    
    <?php endif; ?>

    plik loop.php

    Kod do najprzejrzystszych nie należy, wiem o tym doskonale. Niedawno zacząłem swoją przygodę z wordpressem i stale się uczę

    No i ok, ale masz felerną paginacje

    daj

    <?php
    function pagination()
    {
        global $wp_query;
        $big = 999999999;
        $pagination = paginate_links(array(
            'base' => esc_url_raw(str_replace($big, '%#%', htmlspecialchars_decode(get_pagenum_link($big)))),
            'format' => '?paged=%#%',
            'current' => max(1, get_query_var('paged')),
            'total' => $wp_query->max_num_pages
        ));
    	echo $pagination;
    }
    pagination();
    ?>

    a najlepiej użyj np. WP-PageNavi

    Thread Starter NYCZu

    (@nyczu)

    nie pisałem stylu od zera tylko przerabiałem dość popularny na początek HTML5BlankTheme czy jakoś tak .. I ta paginacja była wbudowana już w ten styl .. no i ta sama jest na codex wordpress

    Zaraz sprawdzę i dam znac

    Thread Starter NYCZu

    (@nyczu)

    e .. nie miałem trochę czasu . sorry ..
    co do paginacji wsadziłem ja w functions i dodalem jak add_actions i nie zadzialala ..

    Raczej add_action …tylko w jaki sposób i po co?

    Jeżeli w functions.php wrzuciłeś całą funkcję, to w motywie ją potem tylko wywołujesz
    <?php pagination(); ?>
    -tyle.
    Nie kombinuj za bardzo, najpierw opanuj podstawy.

Viewing 15 replies - 1 through 15 (of 17 total)
  • Temat ‘Paginacja nie działa’ jest zamknięty na nowe odpowiedzi.