Si je crée une publication contenant une vidéo YouTube intégrée (pour que je ne fasse que coller l'URL de YouTube dans la publication et laisser Wordpress l'insérer automatiquement pour moi), puis-je avoir un aperçu de la vignette de la vidéo l'image en vedette du post?
Pas nativement. Vous devez écrire du code pour y arriver - il existe une fonction Nice Pastebin qui fournit le code nécessaire pour le faire.
Edit (12/19/2011):
Oui, voici comment vous pouvez le faire par programme. Ajoutez les deux fonctions suivantes à votre fichier functions.php et vous devriez être prêt à partir. Le code a été commenté pour expliquer ce qui se passe, mais voici à quoi s'attendre:
Vous devez...
Le code va ...
Notez que si vous incluez plusieurs URL dans votre message, vous devrez modifier le code pour trouver correctement l'URL YouTube. Cela peut être fait en effectuant une itération dans la collection $attachments
et en recherchant quelle URL ressemble à une URL 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
Une chose à noter est que cela suppose que votre message n'a pas de miniature de message et ne sera pas déclenché une fois qu'une vignette de message est définie.
Deuxièmement, si vous supprimez la vignette du message, puis que vous associez une image à ce message à l'aide de l'outil de téléchargement de média, la photo la plus récente sera utilisée.