我希望有人可以帮助我解决问题。我正在为我的一个朋友建立一个新闻网站。该网站开始合并,但我不知道如何为特色图片添加标题。我今天一直在网上寻找,有很多方法可以通过向 php 表中添加代码来做到这一点,但我不确定我在做什么。
我已经在 functions.php 代码中添加了这样的代码,但一切都是成对的。
我一直在祈祷,有人可以通过键入我的操作来帮助我。
预先感谢您的帮助。
亲切的问候
约翰
首先,您需要在 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(); ?>
如果您需要任何其他说明,请告诉我。
我知道这是一个老问题,但我想提供其他人可能更喜欢的另一种解决方案,如果您希望在使用 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 标签时覆盖标题字段数据。如有必要,您可以使用过滤器覆盖该行为。