【问题标题】:How to Add a Featured Image Caption in Wordpress如何在 Wordpress 中添加特色图片标题
【发布时间】:2012-11-30 18:43:24
【问题描述】:

我希望有人可以帮助我解决问题。我正在为我的一个朋友建立一个新闻网站。该网站开始合并,但我不知道如何为特色图片添加标题。我今天一直在网上寻找,有很多方法可以通过向 php 表中添加代码来做到这一点,但我不确定我在做什么。

我在 functions.php 代码中添加了 so 代码,但一切都成对了。

我一直在祈祷,有人可以通过键入我的操作来帮助我。

提前感谢您的帮助。

亲切的问候

约翰

【问题讨论】:

  • “精选图片”是什么意思?您的意思是您希望某些图像有标题而其他图像没有?说明您希望在什么上下文中显示图像、标题等。
  • 特色图片对于每个帖子和页面都有自己的上传位置,称为“特色图片”。所以我认为这就是他所说的。一个快速的谷歌搜索提供了一个简单的解决方案,我将在下面发布。

标签: image wordpress featured captions


【解决方案1】:

首先,您需要将以下代码放入您的 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 标记,请确保您粘贴的代码下方没有空行,因为这可能会导致问题。

然后,您希望在哪里显示标题,您需要使用以下命令调用它:

&lt;?php the_post_thumbnail_caption(); ?&gt;

如果您不确定将调用放在模板文件中的哪个位置,则需要找到调用 &lt;?php the_post_thumbnail(); ?&gt; 的位置。只需在模板文件中查找该行,然后将函数调用放在它附近,即您希望显示标题的位置。该函数自动将标题包装在 span 标签中,因此您可以使用 CSS 定位它,但您也可以将函数调用包装在您想要的任何标签中。

例如,如果您的模板文件使用此或非常类似的方式调用特色图像:

<?php 
    if ( has_post_thumbnail() ) {
        the_post_thumbnail();
} ?>

您希望像这样向它添加标题调用:

<?php 
    if ( has_post_thumbnail() ) {
        the_post_thumbnail();
} ?>
<?php the_post_thumbnail_caption(); ?>

如果您需要任何其他说明,请告诉我。

【讨论】:

  • 您好,安迪,感谢您抽出宝贵时间帮助我。我正在使用一个非常好的名为 Ultimatum 的主题构建器,请参阅以下链接。 ultimatumtheme.com今天早上我已经查看了所有文件夹,但找不到你提到的php文件。所以我复制了你的帖子并记在你的名下,并将其发布在最后通牒论坛上,希望有人能告诉我我需要在记事本++中打开哪个文件并添加到。
  • 没问题,希望对您有所帮助。一旦你弄清楚了,如果这是你要找的,请在这里接受我的回答。我访问了您提供的链接并准备下载一份副本,以便为您找到正确的文件,但它是一个相当昂贵的工具。它似乎是某种前端拖放构建器?所以它可能比典型的 WordPress 主题有更多的代码和文件。
【解决方案2】:

我知道这是一个老问题,但我想提供其他人可能更喜欢的另一种解决方案,如果您希望在使用 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 ) );

请注意,如果您填充“alt text”字段,则在输出 img 标签时,它将覆盖标题字段数据。如有必要,您可以使用过滤器覆盖该行为。

【讨论】:

  • 还有一件事:您可以使用 preg_match_all 函数和类似 '/(alt|title|src)="(.*)"/i 的模式扩展正则表达式以包含其他标签'
猜你喜欢
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 2012-10-12
相关资源
最近更新 更多