永久链接后缩写PHP内部的If / Else语句为WordPress页面模板?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (92)

我正在尝试超链接WordPress博客文章缩略图以链接到其个人博客帖子(永久链接)。下面代码中的文本链接可以实现,但图像部分位于if / else语句中。

码:

<div class="carousel-inner">
        <?php while( $query->have_posts() ) { $query->the_post(); $post_count++; ?>

            <div class="item <?php if( $post_count == 1 ) echo 'active'; ?>">

                        <?php 
                            if ( has_post_thumbnail() ) { 
                    //Permalink needed below
                     the_post_thumbnail( 'slider', array( 'class' => 'img-fluid' ) ); 
                                    }
                                ?>
                                <div class="carousel-caption">
   <h6><a class="headline-links" href="<?php echo get_permalink(); ?>"><?php the_title() ?></a></h6>
                                    <p><?php echo excerpt( 15 ); ?></p>
                                </div>
                            </div>
                        <?php } //wp_reset_postdata(); ?>
                        </div>

最后一个开发人员将永久链接存储在PHP变量中,然后将缩略图超链接。我宁愿保持简单。感谢您的帮助!

提问于
用户回答回答于

将值存储在变量中没有任何问题。如果你只需要永久链接一次,使用echo get_permalink();the_permalink();将会很好。但是,由于您需要在多个位置使用它,因此不会将其定义为变量而是更频繁地调用相同/类似的函数而增加开销。虽然在这个规模上它并不重要,但在更大的范围内它肯定会产生影响。

同样,您可以实际删除has_post_thumbnail()并只是检查是否get_the_post_thumbnail()返回真值。

最后一点,您确定wp_reset_postdata();应该注释掉吗?

以下是我将使用您提供的代码处理此问题的方法:

<div class="carousel-inner">
    <?php while( $query->have_posts() ) { $query->the_post(); $post_count++; ?>
    <div class="<?= $post_count == 1 ? 'item active' : 'item'; ?>">
        <?php
            $permalink = get_permalink();

            if( $thumbnail = get_the_post_thumbnail( null, 'slider', array( 'class' => 'img-fluid' ) ) ){
                echo "<a href='$permalink'>$thumbnail</a>";
            }
        ?>
        <div class="carousel-caption">
            <h6>
                <a class="headline-links" href="<?= $permalink; ?>"><?php the_title() ?></a>
            </h6>
            <p><?= excerpt( 15 ); ?></p>
        </div>
    </div>
    <?php } //wp_reset_postdata(); ?>
</div>

但是,如果你坚持不使用变量(你不应该使用变量!)那么你可以使用它:

<div class="carousel-inner">
    <?php while( $query->have_posts() ) { $query->the_post(); $post_count++; ?>
    <div class="item <?php if( $post_count == 1 ) echo 'active'; ?>">
        <?php   
            if( has_post_thumbnail() ){
                echo '<a href="'. get_permalink() .'">';
                    the_post_thumbnail( 'slider', array( 'class' => 'img-fluid' ) ); 
                echo '</a>';
            }
        ?>
        <div class="carousel-caption">
            <h6>
                <a class="headline-links" href="<?php the_permalink(); ?>"><?php the_title() ?></a>
            </h6>
            <p><?php echo excerpt( 15 ); ?></p>
        </div>
    </div>
    <?php } //wp_reset_postdata(); ?>
</div>

扫码关注云+社区

领取腾讯云代金券