如何在Wordpress heroku中获取随机帖子

时间:2014-04-29 00:01:04

标签: wordpress postgresql heroku wordpress-plugin

我正在使用wordpress heroku,并尝试在侧边栏中显示随机帖子。

我有以下代码:

                    <h2>Random Posts</h2>
                    <ul>
                        <? $args = array( 'posts_per_page' => 5, 'orderby' => 'rand' ); 
                        $rand_posts = get_posts( $args ); ?>

                        <? $posts = get_posts($args) ?>
                        <?= $posts === NULL ? "TRUE" : "" .count($posts) ?>
                        <?php foreach($posts as $post) { ?>
                            <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
                            </li>
                        <?php } ?>
                    </ul>

此代码错误如下:

[28-Apr-2014 23:56:59 UTC] WordPress database error ERROR:  function rand() does not exist

我相信这是因为wordpress heroku不使用MySQL而是使用PostgreSQL。

关于我如何使用随机帖子填充$ posts的任何想法Wordpress heroku使用PostgreSQL而不是MySQL?任何聪明的想法?

由于

1 个答案:

答案 0 :(得分:1)

您可以尝试使用posts_orderby过滤器将RAND()部分更改为RANDOM()

add_filter( 'posts_orderby', 'so_23353237_posts_orderby' );
$rand_posts = get_posts( $args );

,其中

/**
 * Modify the RAND() of MySQL to RANDOM() for PostgreSQL
 *
 */

function so_23353237_posts_orderby( $orderby )
{
    remove_filter( current_filter(), __FUNCTION__ );
    return ' RANDOM() ';
}

请记住添加

'suppress_filters' => FALSE 

get_posts()个参数。

这是未经测试的,但你明白了这一点; - )