似乎不能让Else语句正确?

时间:2013-07-09 作者:Kortschot

我最近在学习PHP,并使用WP和PHP玩allot。我创建了一个PHP,它获取了一些带有相同第1个标记的帖子。这需要一些教程的帮助。本教程缺少的是一条没有标签的消息。

代码如下:

<?php $tags = wp_get_post_tags($post->ID); if ($tags) { ?>
    <h3>Related</h3>
    <?php $first_tag = $tags[0]->term_id; $args=array(
        \'tag__in\' => array($first_tag),
        \'post__not_in\' => array($post->ID),
        \'posts_per_page\'=>10,
        \'caller_get_posts\'=>1
    );?>
    <ul>
        <?php $my_query = new WP_Query($args); if($my_query->have_posts() ) {
            while ($my_query->have_posts()) : $my_query->the_post(); ?>
                    <li><h5><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h5></li>
        <?php endwhile; } wp_reset_query();
    } ?>
    </ul>
我认为这将是一个解决方案:

<?php endwhile; else: echo(\'no tags\'); } wp_reset_query(); } ?>
但这不起作用,但老实说。。。这似乎根本不对。我知道这是很基本的,但是if-else-if-else-while-foreach。。。。有时我看不见树木,看不见森林。

此外,我认为:

</ul>
放置错误。

谢谢,/保罗

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

没有while/else in PHP 据我所知。

其次,我发现"alternate" control structure syntax 无法阅读的,尤其是当两个或三个在同一行上时。使用括号并正确缩进代码。这将更有意义。

<?php 
$tags = wp_get_post_tags($post->ID); if ($tags) { ?>
<h3>Related</h3>
<?php $first_tag = $tags[0]->term_id; $args=array(
    \'tag__in\' => array($first_tag),
    \'post__not_in\' => array($post->ID),
    \'posts_per_page\'=>10,
    \'caller_get_posts\'=>1
);?>
<ul><?php 
  $my_query = new WP_Query($args); 
  if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) {
      $my_query->the_post(); ?>
      <li><h5><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h5></li><?php 
    }
  } else { // this is where the else goes; after the have_posts conditional
    echo(\'no tags\');
  }
  wp_reset_query(); ?>
</ul>
注意到我把else. 它遵循if($my_query->have_posts) 有条件的如果条件是false 你的else 应该运行,这听起来像你想要的。

SO网友:Johannes Pille

在上面的示例中if 构造包括

关键字本身(即if)true 或false (即括号中的内容)如果表达式的计算结果为true{}), 在上面的代码块中<因此,else语句应该紧跟在右大括号之后。

因此

<?php endwhile; } else { echo(\'no tags\'); } wp_reset_query(); } ?>
应该为你工作。

不过,我赞同s\\u ha\\u dum的观点:努力不仅编写工作的代码,而且要编写可读的代码
如果您以后必须回到代码中,那么付出的努力将是值得的。更不用说你是否曾将一个项目转发给另一个开发人员。

结束

相关推荐

Delete Term via edit-tags.php

我可能会对此表示不满,但编辑标签上是否有“删除”链接。php页面?注意:不是WP列表,而是实际页面,您可以在其中单独查看术语。似乎他们在这里添加了选项:https://core.trac.wordpress.org/ticket/9777#no1_更新看起来我看错了WP文件。单个术语页面位于:wp admin/edit tag form。php,并且没有提到任何“删除”。知道了这一点,是否可以在此页面上添加一个删除按钮,或在WP列表中创建一个“删除”列。我这样尝试过,但收到了列的“未定义变量‘tag’”。