【问题标题】:How do I rotate two images in wordpress sidebar?如何在 wordpress 侧边栏中旋转两个图像?
【发布时间】:2010-02-17 00:09:49
【问题描述】:

我认为(希望)我的问题比我的措辞更简单,但这也是我在 Google 上一无所获的原因。它与此类似,但我需要用它处理一些 HTML 并且有点不清楚:Random image display

在我的 Wordpress 安装的侧边栏中,我有两个按此顺序排列的图像:

<a href="http://www.link1.tld"><img src="files/image1.jpg" border="0" /></a>
<a href="http://www.link2.tld"><img src="files/image2.jpg" border="0" /></a>

在页面刷新时完成轮换顺序的最简单方法是什么(以便顺序为 image2 / image1)?下次刷新时,返回 image1 / image2?

【问题讨论】:

  • 您希望它始终旋转还是随机?
  • 理想情况下我希望它可以旋转——我已经更新了标题以反映,谢谢。

标签: php


【解决方案1】:

要实现这一点,您需要在用户的 cookie 中存储一个查看计数器,然后根据该计数器显示:

session_start();
if(!isset($_SESSION['views'])) {
  $_SESSION['views'] = 0;
}
else {
  $_SESSION['views']++;
}

然后显示:

<?php if($_SESSION['views'] % 2 == 0): ?>
<a href="http://www.link1.tld"><img src="files/image1.jpg" border="0" /></a>
<? endif; ?>
<a href="http://www.link2.tld"><img src="files/image2.jpg" border="0" /></a>
<?php if($_SESSION['views'] % 2 == 1): ?>
<a href="http://www.link1.tld"><img src="files/image1.jpg" border="0" /></a>
<? endif; ?>

如果查看计数器是偶数,它将首先打印 image1。如果它很奇怪,它会第二个打印出来。

将其缩放到两个以上的图像可以这样完成:

// map of images to URLs
$images = array(
  'image1.jpg' => 'http://www.link1.tld',
  'image2.jpg' => 'http://www.link2.tld',
  'image3.jpg' => 'http://www.link3.tld',
  'image4.jpg' => 'http://www.link4.tld',
);

// reorder the list of images based on the current view count
$ordered = array_merge(array_slice($images, $_SESSION['views'] % count($images)), array_slice($images, 0, $_SESSION['views'] % count($images)));

然后显示只是循环通过有序列表:

<?php foreach($ordered as $image => $url): ?>
<a href="<?php echo $url; ?>"><img src="files/<?php echo $image; ?>" border="0" /></a>
<?php endforeach; ?>

【讨论】:

  • 从技术上讲,你将计数值存储在 session 中,用户收到一个带有 session id 的 cookie,这样 PHP 就可以将 session 分配给用户,但 session 数据不会存储在客户端上侧面(除了一些不使用原生 PHP 会话的实现,如 codeigniter)
  • 获取“警告:session_start() [function.session-start]:无法发送会话 cookie - 标头已由(输出开始于 /home/wp-content/plugins/audio-player/audio -player.php:663)在第 86 行的 /home/wp-content/themes/softpattern/sidebar.php 中“如果我禁用插件,对于不同的插件,我会收到相同的错误。 php 的 session_start() 部分应该放在哪里?
  • @scraft3613 session_start() 必须在任何输出发送到浏览器之前调用,并且应该从侧边栏文件中移出,可能移到 wp-config.php 中。详情请见:frank-verhoeven.com/using-session-in-wordpress
猜你喜欢
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多