php – wordpress显示之前未显示的随机帖子
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – wordpress显示之前未显示的随机帖子,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1522字,纯文字阅读大概需要3分钟。
内容图文
![php – wordpress显示之前未显示的随机帖子](/upload/InfoBanner/zyjiaocheng/784/52035b7410dc4edf9169b3a10f4be26d.jpg)
我按照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' );
内容总结
以上是互联网集市为您收集整理的php – wordpress显示之前未显示的随机帖子全部内容,希望文章能够帮你解决php – wordpress显示之前未显示的随机帖子所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。