在包括标题的第一段之后添加帖子缩略图

时间:2020-01-30 作者:lefty

下面的函数用于显示第一段后的帖子缩略图。

add_filter( \'the_content\', \'insert_featured_image\', 20 );

function insert_featured_image( $content ) {
  global $post;
  if (has_post_thumbnail($post->ID)) {
    $caption = \'<span class="image-caption">\'.get_the_post_thumbnail_caption( $post ).\'</span>\';
    $img = \'<p>\'.get_the_post_thumbnail( $post->ID, \'full\' ).\'</p>\';
    $content = preg_replace(\'#(<p>.*?</p>)#\',\'$1\'.$img . $caption, $content, 1);
  }
  return $content;
}
(感谢Add 'if exists' to filter)

为了显示图像的标题,我对其进行了修改。

但是,如果特征图像没有标题,代码仍会输出空白span class=“图像标题”。

是否有方法包含if语句?

提前感谢!

1 个回复
最合适的回答,由SO网友:Waldo Rabie 整理而成

像这样的东西应该有用

add_filter( \'the_content\', \'insert_featured_image\', 20 );

function insert_featured_image( $content ) {
  global $post;

  if ( has_post_thumbnail($post->ID) ) {
    $thumbnail_caption = get_the_post_thumbnail_caption( $post );

    if ( $thumbnail_caption )
        $caption = \'<span class="image-caption">\' . $thumbnail_caption . \'</span>\';
    else 
        $caption = \'\'; // You can set this to whatever you want. 

    $img = \'<p>\' . get_the_post_thumbnail( $post->ID, \'full\' ) . \'</p>\';
    $content = preg_replace( \'#(<p>.*?</p>)#\', \'$1\' . $img . $caption, $content, 1);
  }

  return $content;
}

相关推荐

Are captions stored anywhere?

关于我之前的question about shortcode captions, 在我看来,标题的实际文本并不是存储在短代码本身的帖子内容之外的任何地方。我会认为wp_get_attachment_metadata 将存储附件的信息,但它不会。我错了吗?或者WordPress没有在任何地方存储实际的标题?