这是我想要完成的事情
目标A:我想将index.php中的每个缩略图超链接到他们的帖子。 目标B:我想为single.php中的每个缩略图定义一个超链接到外部网站。
您可能会问我为什么要使用缩略图进行single.php?原因是我想要这个布局:
到目前为止,我知道有3种显示图像的方法:
我有完成目标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;
}
答案 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 );