0

我将此代码用于所有页面中的真正随机帖子,但关闭浏览器后会话仍然存在。

函数.php

session_start();

add_filter('posts_orderby', 'edit_posts_orderby');

function edit_posts_orderby($orderby_statement) {

    $seed = $_SESSION['seed'];
    if (empty($seed)) {
      $seed = rand();
      $_SESSION['seed'] = $seed;
    }

    $orderby_statement = 'RAND('.$seed.')';
    return $orderby_statement;
}

如何在 wordpress 中重新启动会话?如果我要发布的同一用户重新加载 index.php 是随机的,与上次会话不同。

4

2 回答 2

1

您可以使用 unset();删除会话变量。在每个页面上重新加载 unset($_SESSION['seed']);或销毁所有带有登录信息的会话session_destroy();

另一个解决方案,您总是可以使用随机种子$_SESSION['seed']=rand();

于 2013-09-30T20:05:01.740 回答
1

总是做一个随机的:

$_SESSION['seed'] = rand() ;

或检查上次访问的页面:

if (!empty($_SESSION['last_page']) && $_SESSION['last_page'] === $_SERVER['PHP_SELF']){
  $_SESSION['seed'] = rand();
} else {
  $_SESSION['last_page'] = $_SERVER['PHP_SELF'] ;
}
于 2013-09-30T20:02:47.597 回答