extraer la imagen de la publicación para que sea una imagen destacada

2

Últimamente he estado trabajando con imágenes destacadas y las he estado agregando a mis publicaciones a medida que avanzaba. Sin embargo, tengo un montón de publicaciones antiguas que no tienen el conjunto de imágenes presentadas y quiero usarlo para cosas como wptouch, etc.

Tengo como 300 publicaciones y, para ser honesto, no quiero ir a 300 publicaciones y configurar las imágenes manualmente.

¿Existe de todos modos, ya sea por complemento o código, que puede codificar donde el área de imágenes destacadas tomará la primera imagen de cada publicación?

    
pregunta dclc 26.08.2011 - 10:59

2 respuestas

3

si la imagen está insertada (adjunta) en la publicación y no en un enlace externo:

function get_my_thumbnail($post_id, $size, $attr = ''){

  // check of featured image first
  $t = get_post_thumbnail_id($post_id);

  // no featured image set, check post attachments
  if(empty($t)){
    $attachments = get_children(array(
      'post_parent'    => $post_id,
      'post_status'    => 'inherit',
      'post_type'      => 'attachment',
      'post_mime_type' => 'image',
      'order'          => 'ASC',
      'orderby'        => 'menu_order ID',
    ));
    $attachment = array_shift($attachments); // we only need one
    $t = $attachment ? $attachment->ID : false;
  } 

  // no attachments either...
  if(empty($t)) return 'no image...';

  // we have either attachment / featured image, so output the post thumbnail
  do_action('begin_fetch_post_thumbnail_html', $post_id, $t, $size); // compat
  $html = wp_get_attachment_image($t, $size, false, $attr);
  do_action('end_fetch_post_thumbnail_html', $post_id, $t, $size);

  return $html;
}

Es posible que también desee regenerar todos los tamaños de archivos adjuntos (crear automáticamente $size -d imágenes de más antiguas), por lo que no obtendrás imágenes enormes con el tamaño del navegador ...

    
respondido por el onetrickpony 26.08.2011 - 11:20
2

Aquí está la función:

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];

// no image found display default image instead
if(empty($first_img)){
    $first_img = get_bloginfo('template_url')."/images/no_image.gif";
}
return $first_img;
}

y aquí está cómo usarlo:

$imgURL = catch_that_image(); 
    
respondido por el Sudirman 26.08.2011 - 11:05

Lea otras preguntas en las etiquetas