首页 > 解决方案 > 包含指向 sprintf 图像的链接

问题描述

我正在使用以下代码输出与 Wordpress 帖子相关的图像:

    if ( $cover ) :
        return sprintf(
                '<img src="%1$s">',
                $cover
            );
    endif;

这确实输出了所需的图像,但我需要它是可点击的,以使用以下方式完整显示图像:

<a href="<?php echo esc_url( $cover( 'medium_large' ) ) ?>">

请有人建议我如何将两者结合在一起?

谢谢。

标签: php

解决方案


所以,我不知道你的代码做了什么,或者变量是如何定义的,但这会产生你想要的输出:

function cover($cover = '') {
    if ( '' !== $cover ) :
        return sprintf(
            '<a href="%1$s"><img src="%1$s"></a>',
            $cover
        );
    endif;
}

echo cover('/path/to/my/image.png');

以上将输出以下代码:

<a href="/path/to/my/image.png">
    <img src="/path/to/my/image.png">
</a>

请记住,我确实假设您已经知道如何获取帖子封面图片 URL,这就是为什么我让函数只接受封面图片 URL。


更新#1

如果您想在单击链接时显示不同尺寸的图像,您可以执行以下操作:

function cover($cover_link = '', $cover_img = '') {
    if ( '' !== $cover ) :
        return sprintf(
            '<a href="%1$s"><img src="%2$s"></a>',
            $cover_link,
            $cover_img
        );
    endif;
}

然后使用coverWordPress 循环中的函数,如下所示:

if ( have_posts() ) {
    while( have_posts() ) {
        the_post();

        // ... HTML or PHP Code you need for your loop

        $cover_link = get_the_post_thumbnail_url(get_the_ID(), 'full');
        $cover_img = get_the_post_thumbnail_url(get_the_ID(), 'post-thumbnail');

        if ( $cover_link && $cover_img ) {
            echo cover($cover_link, $cover_img);
        }

        // ... HTML or PHP Code you need for your loop
    }

}

更新#2

在上面的示例中,我使用了图像大小fullpost-thumbnail. 如果您需要为上传的图像设置自定义尺寸,您可以在functions.php代码中使用,如下所示:

add_image_size( 'my_big_image_size', 1000, 1000, true);
add_image_size( 'my_small_image_size', 500, 500, true);

然后,在循环内,您可以更改以下代码:

$cover_link = get_the_post_thumbnail_url(get_the_ID(), 'full');
$cover_img = get_the_post_thumbnail_url(get_the_ID(), 'post-thumbnail');

对此:

$cover_link = get_the_post_thumbnail_url(get_the_ID(), 'my_big_image_size');
$cover_img = get_the_post_thumbnail_url(get_the_ID(), 'my_small_image_size');

推荐阅读