Configuración de la imagen destacada de una publicación desde un video incrustado de YouTube

13

Si creo una publicación que tiene un video de YouTube incrustado (de modo que todo lo que hago es pegar la URL de YouTube en la publicación y dejar que Wordpress lo incruste automáticamente), ¿hay alguna manera de tener la imagen en miniatura de la ¿El video está configurado como la imagen destacada de la publicación?

    
pregunta Piku 13.08.2011 - 13:36

1 respuesta

17

No de forma nativa. Tendría que escribir algún código para que esto ocurra: hay una buena función pastebin que proporciona el código necesario para hacerlo.

Editar (19/12/2011):

Sí, aquí es cómo puedes hacer esto mediante programación. Agrega las siguientes dos funciones a tu archivo functions.php y deberías estar listo. Se ha comentado el código para explicar lo que está sucediendo, pero aquí hay un alto nivel de qué esperar:

Debes ...

  • Crear una publicación
  • En el contenido, incluye una URL de YouTube

El código será ...

  • Analizar las URL fuera del contenido
  • Agarrará la primera URL que encuentre y asumirá que es una URL de YouTube
  • Coge la miniatura del servidor remoto y descárgala
  • Configúralo como la miniatura de la publicación actual

Tenga en cuenta que si incluye varias URL en su publicación, deberá modificar el código para encontrar correctamente la URL de YouTube. Esto se puede hacer iterando a través de la colección $attachments y rastreando el aspecto de la URL como una URL de YouTube.

function set_youtube_as_featured_image($post_id) {  

    // only want to do this if the post has no thumbnail
    if(!has_post_thumbnail($post_id)) { 

        // find the youtube url
        $post_array = get_post($post_id, ARRAY_A);
        $content = $post_array['post_content'];
        $youtube_id = get_youtube_id($content);

        // build the thumbnail string
        $youtube_thumb_url = 'http://img.youtube.com/vi/' . $youtube_id . '/0.jpg';

        // next, download the URL of the youtube image
        media_sideload_image($youtube_thumb_url, $post_id, 'Sample youtube image.');

        // find the most recent attachment for the given post
        $attachments = get_posts(
            array(
                'post_type' => 'attachment',
                'numberposts' => 1,
                'order' => 'ASC',
                'post_parent' => $post_id
            )
        );
        $attachment = $attachments[0];

        // and set it as the post thumbnail
        set_post_thumbnail( $post_id, $attachment->ID );

    } // end if

} // set_youtube_as_featured_image
add_action('save_post', 'set_youtube_as_featured_image');

function get_youtube_id($content) {

    // find the youtube-based URL in the post
    $urls = array();
    preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $content, $urls);
    $youtube_url = $urls[0][0];

    // next, locate the youtube video id
    $youtube_id = '';
    if(strlen(trim($youtube_url)) > 0) {
        parse_str( parse_url( $youtube_url, PHP_URL_QUERY ) );
        $youtube_id = $v;
    } // end if

    return $youtube_id; 

} // end get_youtube_id

Una cosa a tener en cuenta es que esto supone que su publicación no tiene una miniatura de publicación y no se activará una vez que se haya establecido una miniatura de publicación.

En segundo lugar, si elimina la miniatura de la publicación y luego adjunta una imagen a esta publicación mediante el cargador de medios, se usará la imagen más reciente.

    
respondido por el Tom 14.08.2011 - 00:01

Lea otras preguntas en las etiquetas