单站导航顺序(不按时间顺序)

时间:2013-07-02 作者:Daniel Boccato

在我的主循环中,我只显示“artworks”帖子类型的帖子,orderby=rand。

当我查看单个艺术品并使用下一个/上一个导航时,它会忽略主查询并按时间顺序进行-如法典中所述:http://codex.wordpress.org/Template_Tags/next_post_link

如何存储和使用最初生成的随机顺序来更改后期导航顺序?有什么想法吗?

重新加载主页时,顺序将随机化,但在每个会话中,每个“随机顺序”应保持一致。

例如:

1-主页我看到帖子的顺序是随机的(4,7,1,8,6,3)。我点击8号帖子。

2-在第8个帖子的单一视图中,“下一个”帖子是6个,前一个是1个。等

3-我应该能够来回查看,并且顺序应该是一致的。

4-如果我单击网站标题或再次重新加载它(不仅仅是历史>返回,而是实际的重新加载)。然后应该有一个新的随机顺序。

1 个回复
最合适的回答,由SO网友:Daniel Boccato 整理而成

经过多次尝试和错误后,WP瞬态救了我!!

这是为可能需要此功能的任何人提供的解决方案。。。

在索引中。php(主循环外)我将当前的随机顺序保存在瞬态中:

$order_array = array();
while ( $the_query->have_posts() ) :
    $the_query->the_post();
        $order_array[] = get_the_ID() ;
endwhile;

set_transient(\'post_order\', $order_array, 100);
// the expiration can be whatever you want

// Restore original Post Data
wp_reset_postdata();
现在是单曲。php中添加了next和prev导航功能:

            $next_post_index = $current_post_index+1;
            echo "<br> next post index : " . $next_post_index;
            $next_post_id = $array[$next_post_index];
            echo " id: " . $next_post_id;
            if($next_post_id != \'\') {echo "<br><a href=" . get_permalink( $next_post_id ) . ">next</a>";}

            $previous_post_index = $current_post_index-1;
            echo "<br> previous post index : " . $previous_post_index;
            $previous_post_id = $array[$previous_post_index];
            echo " id: " . $previous_post_id;
            if($previous_post_id != \'\') {echo "<br><a href=" . get_permalink( $previous_post_id ) . ">previous</a>";}
这有一点额外的标记,因为我一直在重复所有内容,以检查它是否正常工作。我相信它可以被清理,但它是有效的!如果之前或之后没有其他帖子,则不会显示next或prev(即第一篇帖子只显示“next”链接)

耶,这很有效:)

结束

相关推荐

定制SQL查询ORDER BY TERM_ORDER

我有一个自定义分类法,它在“series”下列出术语,其中包含的帖子也以“media\\u type”下的术语出现,其中media\\u type是term\\u id 16。我想按terms表中的term\\u order列对列表进行排序,但它不起作用。我做错了什么?谢谢 $q_result = $wpdb->get_col(\"SELECT DISTINCT {$wpdb->terms}.name FROM {$wpdb->terms} INNE