问题描述

我直接从 codex 使用这个代码。

function echo_first_image ($postID)
{
    $args = array(
    'numberposts' => 1,
    'order'=> 'ASC',
    'post_mime_type' => 'image',
    'post_parent' => $postID,
    'post_status' => null,
    'post_type' => 'attachment'
    );

    $attachments = get_children( $args );

    //print_r($attachments);

    if ($attachments) {
        foreach($attachments as $attachment) {
            $image_attributes = wp_get_attachment_image_src( $attachment->ID, 'thumbnail' )  ? wp_get_attachment_image_src( $attachment->ID, 'thumbnail' ) : wp_get_attachment_image_src( $attachment->ID, 'full' );

            echo '<img src="'.wp_get_attachment_thumb_url(%20$attachment->ID%20).'" class="current">';

        }
    }
}

我在这个循环中称之为 echo_first_image ($post->ID);

该函数确实调用,但没有得到输出… 至于我可以看到没有什么在 $attachments

我在我正在使用的帖子中有一个图像。它不是一个特色的图像或在画廊,只是在职位。

我做错了什么,还是有代码首先出错了?

最佳解决方案

如果要显示插入到您的内容中的图像 (例如,热链接的图像),则必须使用像 (source)这样的功能:

添加 functions.php:

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];

  if(empty($first_img)){ //Defines a default image
    $first_img = "/images/default.jpg";
  }
  return $first_img;
}

然后将<?php echo catch_that_image() ?> 放在要显示图像的位置。

注意:刚刚放置在您的内容中的热链接图像无法设置为精选图像,双打 WordPress 的功能。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。