随机POST链接生成器扰乱了循环

时间:2016-05-09 作者:KingRichard

我有以下代码可以生成指向我博客中随机帖子的链接:

<?php 

$posts = get_posts(\'orderby=rand&numberposts=1\'); 

foreach($posts as $post): ?>

    <a href="<?php the_permalink(); ?>" title="Random Post from Our Blog" style="float:right;" class="random-widget">
        <span class="fa-random" style="font-family:FontAwesome;float:right;"></span>
    </a> 

<?php endforeach; 

wp_reset_postdata(); ?>
我替换了wp_reset_query() 具有wp_reset_postdata() 阅读后this question 但这对我不起作用。我的所有页面都显示随机帖子内容,而不是页面内容。这在菜单上方的我的操作栏中调用。

经过多次迭代后,我的代码现在与找到的代码非常相似in the Codex 我仍然在经历同样的问题。以下是我目前掌握的情况:

<?php
    global $post;

    $args = array(\'orderby\'=>\'rand\',\'numberposts\'=>\'1\',\'offset\'=>\'0\');
    $posts = get_posts($args);

    foreach($posts as $post): setup_postdata($post); ?>
        <a href="<?php the_permalink(); ?>" title="Random Post from Our Blog" style="float:right;" class="random-widget">
            <span class="fa-random" style="font-family:FontAwesome;float:right;"></span>
        </a>

    <?php endforeach;
    wp_reset_postdata(); ?>

2 个回复
SO网友:KingRichard

好的,谢谢那个疯子帮我解决麻烦。

看起来我必须将其完全排除在循环之外,并在一个新变量上调用WP\\u查询类来实现它。

以下是有效的方法:

<?php
$query = new WP_Query( array ( \'orderby\' => \'rand\', \'posts_per_page\' => \'1\' ) );

while ( $query->have_posts() ) : $query->the_post(); ?>

    <a href="<?php the_permalink(); ?>" title="Random Post from Our Blog" style="float:right;" class="random-widget">
        <span class="fa-random" style="font-family:FontAwesome;float:right;"></span>
    </a>

<?php endwhile;
wp_reset_postdata(); ?>

SO网友:The Maniac

我想你只需要给setup_postdata. 否则,您的代码看起来应该按预期工作:

<?php foreach($posts as $post): setup_postdata($post); ?>
    <a href="<?php the_permalink(); ?>" title="Random Post from Our Blog" style="float:right;" class="random-widget"><span class="fa-random" style="font-family:FontAwesome;float:right;"></span></a>
<?php endforeach; wp_reset_postdata(); ?>
(注意:我用冒号代替括号,我认为这更容易理解,但完全没有必要)

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>