如何在不使用数组的情况下显示1个随机发布结果?

时间:2021-09-16 作者:robert0

基本上我有这种情况。

我的第一步是使用数组过滤帖子,比如使用以下方法:

$posts = get_posts(array(
    \'post_type\'         => \'post\',
    \'posts_per_page\'    => 99999999,


    \'meta_query\' => array(
            array(
                \'key\'     => \'status\',
                \'value\'   => \'active\',
            ),
        ),

    \'orderby\'               => \'rand\'
));
那么,假设在上面的代码之后,我剩下了20篇随机帖子。

在第二步中,我使用PHP过滤器(这在上面的数组中是不可能的):

<?php 
$postid = get_the_ID(); 
$a1=get_post_meta( $postid, \'a1\' , true );
$a2=get_post_meta( $postid, \'a2\' , true );
if ($a1 < $a2): ?>

    <?php the_title(); ?>  

<?php endif; ?>
上面的过滤器会过滤出结果,然后我现在只剩下5个post结果。

我的问题是,有没有php代码可以从列表中随机选择一篇文章?

我不需要5个,我只需要1个。

希望我明白了。

这里急需帮助。

2 个回复
SO网友:Tom J Nowell

Set posts_per_page to 1. 而不是要求一页的结果包含99999999 发帖,要求每页只发一篇帖子。

SO网友:Hitesh Gandhi

Below code will help you to achieve 1 random post.

$posts = get_posts(array(
\'post_type\'         => \'post\',
\'posts_per_page\'    => 1,
\'meta_query\' => array(
        array(
            \'key\'     => \'status\',
            \'value\'   => \'active\',
            \'compare\'   => \'=\', /* if equal to not works then you need to change \'IN\'*/
        ),
    ),
\'orderby\'               => \'rand\'

));

相关推荐

WordPress摘录-如何使用unctions.php删除第一个链接

我刚刚将一个博客导入Wordpress,所有内容都以以下内容开头:<a href="itunes.com">Listen on iTunes</a> 然后是段落内容,因此所有节选都显示为“;收听iTunes内容摘录"E;我尝试了这里的一些自定义函数,但似乎没有一个能起到作用。在不必移动iTunes链接的情况下删除Listen on iTunes文本的最佳方法是什么?例如,我试过这个。。。没有运气。。。 function custom_ex