每小时随机更新图库,没有重复吗?

时间:2015-07-01 作者:Nilohn

我需要order by rand 无重复项,且update 我的厨房每小时都在WordPress上。

检查以下代码。这就是我想要的,(PHP,MySQLi):

<?php
            include ("connect-sqli.php");
            $rand = date("g");   // Update Gallery Randomly in every hour.....

            $query = "SELECT * FROM posts ORDER BY RAND($rand)";
Q : 如何在WordPress网站上执行此操作?

WordPress代码:

<div id="container">

          <?php if (have_posts()) :

                global $wp_query;

                $args = array_merge($wp_query->query, array(
                        \'posts_per_page\' => 10,
                        \'orderby\' => \'rand\',
                    ));

                query_posts($args);
                $x = 0;
                while (have_posts()) : the_post();
                if( $post->ID == $do_not_duplicate ) continue;
                    ?>

                <div id="post-container"> Post Template Here </div>

                <?php $x++; ?>

                <?php endwhile; ?>

</div>
           <?php else : endif; ?>

    <nav id="page-nav">
        <?php next_posts_link() ?>
    </nav>

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您试图检索一组帖子,并以随机顺序显示它们。

首先:

缩进您的代码以防止bug,当代码读取时,会有一个结尾endif; 在您的问题代码中,但没有打开if语句。如果您已经正确缩进,这将是微不足道的,好的编辑器会自动为您缩进$do_not_duplicate 未定义在任何情况下均不得使用query_post. 任何网站或个人告诉您使用它的方式都是错误的,它会助长导致常见且容易避免的问题的不良做法,例如分页问题如果您试图用随机排序的不同帖子列表替换页面上列出的帖子,那么您应该使用pre_get_posts 筛选以修改主查询,而不是将其丢弃并放置新查询以浪费时间。

如果您试图在侧边栏或帖子末尾添加帖子列表,请使用WP_Query, e、 g.:

$parameters = array( ... );
$query = new WP_Query( $parameters );
if ( $query->have_posts() ) {
    // posts were found
    while ( $query->have_posts() ) {
        // set the current post, then display it
        $query->the_post();
    }
    // cleanup afterwards
    wp_reset_postdata();
} else {
    // nothing was found
}
WP\\U查询的codex页面包含它所采用的所有参数及其用法的完整列表,包括orderby. 特别提到rand 值选择随机帖子。这些选项不是SQL,因此在其中放置随机性原始SQL将不起作用,也不建议这样做。

如果要防止重复,应使用post__not_in 指定不检索哪些帖子,但当您试图修改存档或主查询时,我认为这对您没有帮助。

相反,类似的方法应该会有所帮助:

add_filter( \'pre_get_posts\', function ( $query ) {
    if ( $query->is_main_query() && !is_admin() ) {
        $query->set( \'order\', \'rand\' );
    }
} );
该片段将使前端上的所有主要查询随机排序,您需要添加一个额外的检查,以确保只有您想要的页面/归档文件是随机排序的,但由于您没有提到您的查询是在哪里进行的或为什么进行的,我只能猜测,但这可能是一个有趣的新问题

结束

相关推荐

Pagination custom query

我正在尝试制作一个自定义页面模板,以显示浏览次数最多的帖子。我可以回复帖子,但我很难弄清楚如何分页。以下是我所拥有的:$args = array(\'orderby\' => \'meta_value_num\', \'meta_key\' => \'post_views_count\', \'posts_per_page\' => 36 ); $loop = new WP_Query( $args ); while ( $