• Rozwiązano Bazan

    (@bazan)


    Chcę wyświetlić 3 losowe posty z mojego custom_post_type

    Nazwa post_type to 'portfolio’

    Kod który używam wprawdzie wyświetla 3 posty, ale nie są one losowe, zawsze ostatnie, nawet jak zrobie order=>asc lub desc to kolejnosc sie nie zmienia. Ale jak wpisze zeby pobieral 1 lub 10 postów to pobiera odpowiednia ilosc, niestety zawsze są w tej samej kolejnosci.

    Moj kod:

    <?php
    	remove_all_filters('posts_orderby');
    
    	$argss=array(
    		'post_type'=>'portfolio',
    		'orderby'=>'rand',
    		'posts_per_page'=>'3',
    		'post__not_in'=>array($post->ID)
    		);
    
    	$queryObjects = new WP_Query($argss);
    	// The Loop!
    	if ($queryObjects->have_posts()) {
    	   ?>
    
    	   <?php
    	    while ($queryObjects->have_posts()) {
            $queryObjects->the_post();
            ?>
    
            <article class="random-page">
    			<a>" title="<?php the_title();?>">
    			<?php
    			if ( has_post_thumbnail() ) {
    				the_post_thumbnail();
    			}
    			else {
    				echo '<img src="' . get_bloginfo( 'template_directory' ) . '/images/empty-th.jpg" alt="<?php the_title();?>" width="235"/>';
    			}
    			?>
    
    			<h3 class="random-title"><?php the_title();?></h3>
    			</a>
    		</article>
       	 <?php
    		} //endwhile
    		?>
    
    	<?php
    	} //endif
    	wp_reset_postdata();
    
    	?>

    Probowalem rowniez metody query_posts($args) ale również nie działa :/ Co robić?! Przestudiowałem duuużo proponowanych rozwiązań ale żaden nie chce działać :/

Viewing 3 replies - 1 through 3 (of 3 total)
  • Po linijce

    if ($queryObjects->have_posts()) {

    dodaj:

    print_r($queryObjects);

    i zobacz, jakiego SQLa to query generuje. To pomoże lokalizować problem.

    Twórca wątku Bazan

    (@bazan)

    W wyniku tego print_r znalazlem cos takiego:

    [query] => Array
            (
                [post_type] => portfolio
                [posts_per_page] => 3
                [orderby] => rand
                [post__not_in] => Array
                    (
                        [0] => 20
                    )
    
            )
    
        [request] => SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.ID NOT IN (20) AND wp_posts.post_type = 'portfolio' AND (wp_posts.post_status = 'publish')  ORDER BY wp_posts.post_title ASC LIMIT 0, 3

    Zauwazylem ze niewazne co wpisze w orderby dla wywolania WP_Query, to i tak zawsze jest w SQL ORDER BY wp_posts.post_title.

    Jakies pomysly jak to naprawic?

    Twórca wątku Bazan

    (@bazan)

    Nie mam pojecia dlaczego $q[’orderby’] jest zawsze ustawiona na title, a niby powinna byc pobierana z query, wylaczylem wszystkie wtyczki ale to nie one to powoduja :/.

    @edit

    Znalazlem rozwiązanie…

    Jak byłem kiedyś (jakies 2 tygodnie wcześniej jak zaczynałem projekt ale później go odłożyłem) młody i głupi to szukałem podobnego rozwiązania i robiłem zwykłe copy paste funkcji znalezionych w necie.

    Całe zamieszanie przez funkcje w functions.php:

    function customize_customtaxonomy_archive_display ( $query ) {
        if (($query->is_main_query()) && (is_tax('technologie')))
    
        $query->set( 'posts_per_page', '3' );
        $query->set( 'orderby', 'title' );
        $query->set( 'order', 'ASC' );
    }
    add_action( 'pre_get_posts', 'customize_customtaxonomy_archive_display' );

    Że też od początku o tym nie pomyślałem… Ale przynajmniej troche postudiowałem core wordpressa 😀

    Po usunięciu tego filtra wszystko działa jak powinno 😀

Viewing 3 replies - 1 through 3 (of 3 total)
  • Temat ‘WP_Query losowe posty’ jest zamknięty na nowe odpowiedzi.