如何在Wordpress中添加特色图像标题

时间:2012-12-12 23:15:21

标签: image wordpress featured captions

我希望有人可以帮我解决问题。我正在为我的一个朋友建立一个新闻网站。该网站开始走到一起,但我无法找到如何为特色图片添加字幕。今天我一直在寻找网络,有很多方法可以通过向php工作表添加代码来实现,但我不确定我在做什么。

我已将这些代码添加到functions.php代码中,但所有内容都是成对的。

我保持手指交叉,有人可以通过键入我的操作来帮助我。

提前感谢您的帮助。

亲切的问候

约翰

3 个答案:

答案 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