【问题标题】:php display only the last result of a if loopphp 只显示 if 循环的最后一个结果
【发布时间】:2016-12-10 20:49:36
【问题描述】:

我在我的网站上使用循环来显示当前帖子的上一个帖子永久链接。

<?php
global $post;
$current_post = $post;
for($i = 1; $i <= 30; $i++):
$post = get_previous_post();
setup_postdata($post); ?>

<?php if($post): ?>

<a href="<?php the_permalink(); ?>" title="post-<?php the_ID(); ?>" class="next_link">Next Posts</a>

<?php endif; ?>
<?php endfor;
wp_reset_postdata();
$post = $current_post; 
?>

使用这个循环,我获得了 30 倍的“下一篇文章”链接。 我想要做的是只得到这个循环的最后一个结果。

目前,我使用 css 和 jquery 只显示最后一个链接,使用这个 css:

a.next_link {display:none}
a.next_link:last-child {display: block}

但你可以想象这不是一个好的解决方案。

我想运行循环并且只获取最后一个 $post。

有没有办法在我的循环中添加一些 php 以仅获取此循环的最后一个 $post ?

感谢您的帮助,

【问题讨论】:

  • endfor 之后输出,而不是在内部。如果您不关心其他 29 个,为什么还要运行 for
  • 扔掉一个循环,只需$post = get_previous_post();?
  • @u_mulder,在这个循环之前,我在当前帖子上显示了 29 个帖子,所以我需要获取 30 个之前的帖子,然后只显示这 30 个帖子中的最后一个,然后转到我的下一个帖子邮政。向 get_previous_post() 函数添加偏移量是一个技巧。
  • @u_mulder 搞砸了?谢谢

标签: php wordpress for-loop postdata


【解决方案1】:

您想要做的是跳过前 29 个条目,因为 WP 没有为您提供开箱即用的方法。使用continue 来操作您的循环。

<?php
global $post;
$current_post = $post;
for($i = 1; $i <= 30; $i++):
$post = get_previous_post();
if ($i != 30):
  continue;
endif;
setup_postdata($post); ?>

<?php if($post): ?>

<a href="<?php the_permalink(); ?>" title="post-<?php the_ID(); ?>" class="next_link">Next Posts</a>

<?php endif; ?>
<?php endfor;
wp_reset_postdata();
$post = $current_post; 
?>

【讨论】:

  • 就像一个魅力,非常感谢!我不知道 continue 功能......会经常使用它!
猜你喜欢
  • 2019-03-11
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
相关资源
最近更新 更多