我希望有人可以帮我解决问题。我正在为我的一个朋友建立一个新闻网站。该网站开始走到一起,但我无法找到如何为特色图片添加字幕。今天我一直在寻找网络,有很多方法可以通过向php工作表添加代码来实现,但我不确定我在做什么。
我已将这些代码添加到functions.php代码中,但所有内容都是成对的。
我保持手指交叉,有人可以通过键入我的操作来帮助我。
提前感谢您的帮助。
亲切的问候
约翰
答案 0 :(得分:9)
首先,您需要在functions.php文件中删除以下代码:
function the_post_thumbnail_caption() {
global $post;
$thumbnail_id = get_post_thumbnail_id($post->ID);
$thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment'));
if ($thumbnail_image && isset($thumbnail_image[0])) {
echo '<span>'.$thumbnail_image[0]->post_excerpt.'</span>';
}
}
在该文件中关闭PHP标记之前粘贴它,如果没有关闭的PHP标记,那么请确保粘贴的代码下方没有空行,因为这可能会导致问题。
然后,在您希望显示标题的位置,您需要使用此标注:
<?php the_post_thumbnail_caption(); ?>
如果您不确定将调用放在模板文件中的哪个位置,则需要找到调用<?php the_post_thumbnail(); ?>
的位置。只需在模板文件中查找该行,并将函数调用放在它附近,您可以在哪里显示标题。该函数自动将标题包装在span标记中,以便您可以使用CSS对其进行定位,但您也可以将函数调用包装在您想要的任何标记中。
例如,如果你的模板文件用这个或类似的东西调用特色图像:
<?php
if ( has_post_thumbnail() ) {
the_post_thumbnail();
} ?>
你想要像这样添加标题调用:
<?php
if ( has_post_thumbnail() ) {
the_post_thumbnail();
} ?>
<?php the_post_thumbnail_caption(); ?>
如果您需要任何其他说明,请与我们联系。
答案 1 :(得分:0)
我知道这是一个老问题,但我想提供其他人可能更喜欢的另一种解决方案,如果您希望在使用WordPress中已有的字段时处理已经可用的数据(减少数据库调用)。
由于get_the_post_thumbnail()
的输出将整个img标记作为字符串返回,并且从标题字段预先填充了alt标记,因此您可以使用xml解析器或正则表达式简单地提取图像标记的alt标记。
我这样做了:
<?php
if ( $featured = get_the_post_thumbnail( get_the_ID() ) ):
echo $featured;
preg_match('/alt="(.*)"/i', $featured, $caption);
if ($caption) {
echo wpautop(array_pop($caption));
}
endif;
?>
如果你想在最初接受的答案中使用它,你可以将img标签直接传递给你的函数:
function get_the_post_thumbnail_caption($img_tag) {
preg_match('/alt="(.*)"/i', $img_tag, $caption);
return array_pop($caption);
}
在模板中:
$img = get_the_post_thumbnail( get_the_ID() ); // or any id
echo wpautop( get_the_post_thumbnail_caption( $img ) );
请注意,如果填充“替代文字”字段,则会在输出img标记时覆盖标题字段数据。如有必要,您可以使用过滤器覆盖该行为。
答案 2 :(得分:-2)
the_post_thumbnail(); // without parameter -> Thumbnail
the_post_thumbnail('thumbnail'); // Thumbnail (default 150px x 150px max)
the_post_thumbnail('medium'); // Medium resolution (default 300px x 300px max)
the_post_thumbnail('large'); // Large resolution (default 640px x 640px max)
the_post_thumbnail('full'); // Original image resolution (unmodified)
the_post_thumbnail( array(100,100) ); // Other resolutions