我正在使用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?任何聪明的想法?
由于
答案 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()
个参数。
这是未经测试的,但你明白了这一点; - )