加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – wordpress显示之前未显示的随机帖子

发布时间:2021-08-28 03:43:06 所属栏目:大数据 来源: https://www.jb51.cc
导读:我按照wordpress的纪录片创建了这个非常简单的函数,据我所知,这段代码应该可以正常工作 query_posts(array('orderby' = 'rand', 'post__not_in' = $_SESSION['watched'], 'showposts' = 1)); 并且会话的代码不再高级 if(!in_array($post-ID, $_SESSION['watc

我按照wordpress的纪录片创建了这个非常简单的函数,据我所知,这段代码应该可以正常工作

query_posts(array('orderby' => 'rand', 'post__not_in' => $_SESSION['watched'], 'showposts' => 1));

并且会话的代码不再高级

if(!in_array($post->ID, $_SESSION['watched'])){
    array_push($_SESSION['watched'],$post->ID);
}

如果您知道任何其他解决方案或如何解决此特定解决方案
所有的答案都非常感谢…如果我错过了什么,请告诉我,我会添加这些信息.

解决方法:

This topic on wordpress.org似乎与你的问题相关 – post__not_in显然有一些相当奇怪的问题.

试试这个:

function removeSeenPosts ($where) {
    global $wpdb;
    if (count($_SESSION['watched']) > 0) {
        $where .= ' AND ' . $wpdb->posts . '.ID NOT IN(' . implode (',', $_SESSION['watched']) . ') ';
    }
    return $where;
}

add_filter('posts_where', 'removeSeenPosts');
query_posts(array('orderby' => 'rand', 'showposts' => 1));
remove_filter('posts_where', 'removeSeenPosts');

如果这没有帮助(我实际上怀疑),问题显然与会话中的帖子ID存储有关.

我想到两件事:

>除了标题已被发送之外,是否可以填充$_SESSION?我不记得了……
>将帖子存储在适当的cookie中似乎是一种可行的替代方案,并且作为额外的奖励,会使存储在会话中保持不变.

未经测试的插件实现:

function setViewedPostCookies() {
    if (is_single())
    {
        global $wp_query;
        if (!isset($_COOKIE['watched']))
        {
            $excluded_posts = array();
        }
        else
        {
            $excluded_posts = implode(',', $_COOKIE['watched']);
        }
        $excluded_posts[] = $wp_query->post->ID;
        $excluded_posts = array_unique($excluded_posts);
        setcookie('watched', explode(',', $excluded_posts), time() + 3600000, '/');
    }
}

add_action( 'get_header', 'setViewedPostCookies' );

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读