Wsparcie » Zaawansowane » 3 posty na str głównej i odnośnik do starszych.

  • Witam,
    Zmagam się z takim problemem. Chcę żeby na stronie głównej były wyświetlane 3 ostatnie posty a pod nimi odnośnik do starszych. Z postami w kategoriach sobie poradziłem z tym, jednak na stronie głównej nie mogę dojść do tego. Przeglądałem dużo stron i nie trafiłem na dobrą wskazówkę. Żeby zobrazować mniej więcej co chcę zrobić to na http://www.e-rap24.pl na str. głównej zamiast napisu „Pokaż wszystkie artykuły” chcę żeby pojawiły się odnośniki do stron(bądź nawet tak jak się kliknie w „pokaż wszystkie artykuły”). Na stronie głównej posty wyświetlam za pomocą pętli foreach. A dodam jeszcze, że jak wrzucę już jakiś odnośnik to przy zmianie strony pokazują się ciągle 3 ostatnie posty.

    Tym sposobem wyświetlam newsy na str głównej

    <?php
    
    		$args = array( 'category'=> '');
    		$lastposts = get_posts( $args );
    		foreach($lastposts as $post) : setup_postdata($post); ?>
    			<article>
    				<header>
    
    					<h1><a>"><?php the_title(); ?></a></h1>
    					<p>
    						Author: <?php the_author_posts_link(); ?>,
    						Posted: <?php the_time('j F, Y'); ?>,
    						Categories: <?php the_category(' ,') ?>
    						<div class="clr"></div>
    					</p>
    					<div class="clr"></div><!-- /clr -->
    				</header>
    				<section>
    					<?php if ( has_post_thumbnail()) : ?>
    						<a>" title="<?php the_title_attribute(); ?>" >
    						 <?php echo get_the_post_thumbnail( $id, array(150,150) ); ?>
    						</a>
    					<?php endif; ?>
    
    					<?php the_excerpt(); ?>
    					<div><a>">wiecej</a></div>
    					<div class="clr"></div>
    				</section>
    
    			</article>
    
    		<?php endforeach; ?>

    A tutaj funkcja która wyświetla 3 posty

    function three_posts_on_homepage( $query ) {
        if (is_page_template('homepage.php') ) {
    
            $query->set( 'posts_per_page', 3 );
    
        }
    }
    add_action( 'pre_get_posts', 'three_posts_on_homepage' );

    Pozdrawiam,
    tomsonis

Viewing 3 replies - 1 through 3 (of 3 total)
  • nie do końca jestem pewien jak ma to wyglądać, bo piszesz tylko o stronie głównej

    jeśli jedynym problemem jest wyświetlenie 3 postów na stronie głównej a większej ilości na kolejnych stronach to użyj pluginu:
    http://wordpress.org/plugins/custom-post-limits/

    możesz sobie tam ustawić ilość postów jaką chcesz wyświetlać na poszczególnych podstronach

    możesz też wyświetlić np. 3 posty w inny sposób, a pozostałe na stronie głównej jako linki (tak piszesz, więc chyba dobrze rozumiem)

    zamiast funkcji i foreach możesz użyć takiego rozwiązania:

    <?php if (have_posts()) : while (have_posts()) :
    ++$i; // zmienna $i w celu odliczania kolejnych postów
    if( $i <= 3 ) : the_post(); // wyświetli 3 pierwsze posty ?>
    
    <!-- część dla kodu dla pierwszych 3 postów -->
    
    <?php else: the_post(); ?>
    
    <!-- część dla kodu dla kolejnych postów (czyli np. same linki) -->
    
    <?php endif; // koniec warunku dla 3 postów ?>
    <?php endwhile; endif; // koniec if while posts ?>

    możesz też wziąć pod uwagę paginację, czyli strona główna to jedno, a kolejne strony wpisów to drugie
    wtedy powyższy kod zamknij w:

    <?php if(!is_paged()) : // if dla strony głównej ?>
    
    <!-- cały wcześniejszy kod dla wyświetlania postów -->
    
    <?php else: // reguła dla pozostałych stron (2,3,4 etc. z wpisami) ?>
    
    <!-- kod do wyświetlania postów if have posts, wiadomo -->
    
    <?php endif; // koniec konstrukcji if dla rozgraniczenia strony głównej i kolejnych ?>

    Postaram się trafniej wytłumaczyć być może trochę namieszałem.
    Otóż, tak jak na twojej stronie na samym dole masz odnośniki do stron. Chcę tak samo zrobić tylko, że:
    -strona główna jest ustawiona jako szablon.
    A po kliknięci w odnośnik np. „starsze” chcę żeby na cały szablon był zachowany tzn. slider i dolna część „współpracujemy”, a zmieniły się 3 ostatnie posty na starsze.

    na samym dole na moim blogu jest zwyczajna paginacja z pomocą pluginu:
    http://wordpress.org/plugins/wp-paginate/

    jeśli chcesz oddzielić w kodzie wygląd dla strony głównej i kolejnych stron w archiwum (tych z paginacją – 2,3,4 etc.) możesz tak jak Ci napisałem dać

    <?php if(!is_paged()) : // if dla strony głównej ?>
    
    <!-- cały wcześniejszy kod dla wyświetlania postów -->
    
    <?php else: // reguła dla pozostałych stron (2,3,4 etc. z wpisami) ?>
    
    <!-- kod do wyświetlania postów if have posts, wiadomo -->
    
    <?php endif; // koniec konstrukcji if dla rozgraniczenia strony głównej i kolejnych ?>

    albo rozdzielić stronę główną na pętlę (loop.php) i strony z paginacji (archive.php)

    naprawdę trudno rozgryźć co Ty chcesz osiągnąć bo piszesz o 3 ostatnich postach, a domyślnie wyświetla się 10 ostatnich postów
    zmieniłeś sobie wyświetlanie na 3, czy chcesz mieć 7 statycznych postów a tylko 3 ostatnie miałyby się zmieniać po wejściu w kolejne strony archiwum wpisów?

    ma zostać slider ze strony głównej, czyli zmieniają się tylko wpisy?
    jak tak to co za problem dać statycznie slider do pętli wpisów loop, będzie widoczny zawsze i na stronie głównej i na kolejnych stronach z wpisami

    naprawdę nie mam pojęcia co tak naprawdę chcesz osiągnąć

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘3 posty na str głównej i odnośnik do starszych.’ is closed to new replies.