• Хочу чтоб из определенной категории на странице выводилась одна запись в случайном порядке. Вроде сделал все что нужно, но в итоге всегда выводится одна и тажа запись. Подскажите где ошибка?

    <div class="entry">
    <?php query_posts('orderby=rand&cat=10&showposts=1'); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    <div class="img-ad">
    <div class="sticky-img"></div>
    <?phpif ( has_post_thumbnail() ) {
    	the_post_thumbnail( 'custom-size' );
    }
    else {
    if(!has_post_thumbnail()) {
    echo "<p class=\"img-def\"> </p>";
    }
    }
    ?> </div>
       <ul><li><a title="<?php the_title(); ?>" href="<?php the_permalink(); >"><?php the_title(); ?> </a></li></ul>
    <?php the_excerpt(); ?><?php endwhile; endif; ?>

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Ну вроде всё верно, только я бы вместо showposts=1 ипользовал posts_per_page=1
    Но вряд ли в этом ошибка.

    Менял, но не помогло. Только вместо одной записи начало выдаваться две.

    Код точно рабочий? Дело в том, что в приведенном Вами коде ошибка:

    href="<?php the_permalink(); >"

    нужно

    href="<?php the_permalink(); ?>"

    Да и лишние проверки: Если миниатюра есть {код} иначе { если миниатюры нет{ код}}
    Можно сократить до

    <div class="entry">
    <?php
    	query_posts('orderby=rand&cat=10&posts_per_page=1');
    	if (have_posts()) :
    		while (have_posts()) : the_post(); ?>
    		<div class="img-ad">
    		<div class="sticky-img"></div>
    		<?php if ( has_post_thumbnail() ) {
    			the_post_thumbnail( 'custom-size' );
    			}
    		else {
    			echo '<p class="img-def"></p>';
    			} ?>
    		</div>
    		<ul><li><a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?> </a></li></ul>
    <?php
    		the_excerpt();
    		endwhile;
    	endif;
    	wp_reset_postdata(); ?>

    Однако в любом случае проблема не в этом…

    Скопировал плохо. У меня без ошибки.

    А нету никаких команд чтоб записи по очереди показывать, если рамдомно не получается?

    Вообще подобные вещи лучше делать через хук pre_get_posts в файле functions.php.

    Что-то типа этого?

    function category_shortcode( $atts )
    {
    
       if (is_home()) { query_posts($query_string.'&orderby=rand&cat=10&showposts=1'); }
       //цикл
        if ( have_posts() ) : while ( have_posts() ) : the_post();
    	echo'<h3><a href="'; echo the_permalink(); echo '">'; echo the_title(); echo '</a></h3>';
    		echo the_excerpt();
    	endwhile; else:
    	endif;
       //сброс
       wp_reset_query();
    }
    add_action('pre_get_posts','search_filter');

    Если да то тоже не выходит(.

    showposts это устаревший параметр.
    пробуйте так:

    <?php query_posts('orderby=rand&cat=10&numberposts=50&posts_per_page=1'); ?>

    у вас сейчас код — orderby=rand&cat=10&showposts=1, если вдуматься в то, что он делает, то станет понятно — что он берет 1 запись из рубрики с ид 10, а потом случайно выводит эту одну запись. так как она всего одна — она одна и выводится.

    Конечно не выходит… у вас название функции одно а в экшнене совсем другое.

    и квери пост не парвильно записано — его там не должно быть. Мне кажется вам нужно потренироваться вначале на простых запросах чтоб понять как это работает, вот смотрите

    function exclude_category( $query ) {
        if ( $query->is_home() && $query->is_main_query() ) {
            $query->set( 'cat', '-1,-1347' );
        }
    }
    add_action( 'pre_get_posts', 'exclude_category' );

    1. Даете название функции
    2. конструкцией if проверяете запрос на нужной странице и является ли этот запрос основным (главным), затем переопределяете его
    3. Вешаете вашу функцию на событие pre_get_posts

    Flector
    showposts поставил потому что с posts_per_page выводится не одна запись, а две . Изменил на то что писали Вы, все равно не выходит.
    Evgeny
    Да не доглядел в экшнене. Изменил получается у меня эта запись должна выводиться в боковой панели, а в центре другие записи. Так вот когда ставлю то боковая панель дублирует записи с центральной.
    Учиться надо, но хотелось бы сейчас реализовать это.

    Все чудесным образом заработало. Нечего не менял, а просто закинул пока это дело. Вчера зашел поглядеть и оказалось, что все заработало само по себе. Всем спасибо за внимание.

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «Вывод записей в случайном порядке.» закрыта для новых ответов.