外部链接的缩略图和要发布的缩略图

时间:2014-09-06 22:39:34

标签: php image thumbnails wordpress

这是我想要完成的事情

目标A:我想将index.php中的每个缩略图超链接到他们的帖子。 目标B:我想为single.php中的每个缩略图定义一个超链接到外部网站。

您可能会问我为什么要使用缩略图进行single.php?原因是我想要这个布局:

enter image description here

到目前为止,我知道有3种显示图像的方法:

  1. 将图像与文本一起插入编辑器区域,但问题是我不能以不同的方式浮动图像和文本,因为帖子中的所有项目都被分配了一个p标签 - 我错了吗?
  2. 自定义字段应该完成工作,但它似乎不是最有效的方式 - 或者我错了?
  3. 发布缩略图应该是最简单的方法,但请参阅下面的问题
  4. 我有完成目标A和B的代码,但它们只能单独工作。 换句话说,如果存在“代码2”,则“代码1”不起作用。 我该如何解决这个问题?或者有更好的方法来实现我的目标吗?

    代码1:使用自定义字段(single.php)将缩略图链接到外部网站

    <?php $name = get_post_meta($post->ID, 'externalurl', true);
    if( $name ) { ?>
    <a href="<?php echo $name; ?>"><?php the_post_thumbnail(); ?></a>
    <?php } else {
    the_post_thumbnail();
    } ?>
    

    代码2:将缩略图链接到帖子(functions.php)

    add_filter( 'post_thumbnail_html', 'my_post_image_html', 10, 3 );
    
    function my_post_image_html( $html, $post_id, $post_image_id ) {
    $html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_the_title( $post_id ) ) . '">' . $html . '</a>';
    return $html;
    }
    

1 个答案:

答案 0 :(得分:1)

is_single()函数将帮助您实现所需。尝试下面的functions.php中的代码,并从single.php中删除其他代码

function my_post_image_html( $html, $post_id, $post_image_id ) { 
if ( is_single()) { 
    $name = get_post_meta($post_id, 'externalurl', true);
    if( $name ) {           
        $html = '<a href="'.$name.'" title="' . esc_attr( get_the_title( $post_id ) ) . '">' . $html . '</a>';
    }
    return $html;
}
else 
{
    $html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_the_title( $post_id ) ) . '">' . $html . '</a>';
    return $html;
}
}

add_filter( 'post_thumbnail_html', 'my_post_image_html', 10, 3 );