web-dev-qa-db-fra.com

Comment intégrer automatiquement YouTube avec wp_insert_post ()

J'utilise ce code pour ajouter un message à Wordpress:

$new_post = array(
    'post_title' => $title,
    'post_content' => "test   https://www.youtube.com/watch?v=4g3e8XwVIYc   https://youtu.be/LPpW_8c5jE4",
    'post_status' => 'publish',
    'post_author' => $author,
    'post_type' => 'post'
);
wp_insert_post($new_post, true);

Le problème est que les liens youtube ne seront pas intégrés. Cependant, si je le poste manuellement sur WordPress alors les liens seront automatiquement intégrés.

Que dois-je faire pour que WordPress transforme automatiquement l'URL youtube en vidéos intégrées?

Une autre réponse de ce site dit d'utiliser wp_insert_post (), mais comment puis-je extraire les URL YouTube du contenu de la publication, compte tenu de la diversité des syntaxes d'URL YouTube. Incorpore la page sur WP Codex dit de simplement mettre "l'URL de la vidéo dans la zone de contenu". Je suis surpris qu'il n'y ait pas de fonction pour incorporer automatiquement toutes les vidéos YouTube lors de l'utilisation de wp_insert_post () ... à moins que je manque quelque chose?

Merci

1
comdex

Les URL YouTube et autres services qui intègrent du contenu dans le travail de publication de contenu via une fonctionnalité appelée oEmbed . Vous devez utiliser wp_oembed_get() pour récupérer le contenu intégré pour que cela fonctionne.

Dans votre cas, vous insérez du contenu directement, donc vous ne voudrez probablement pas simplement appeler wp_oembed_get() et l'appeler un jour. Ça ne marchera pas. Il est préférable d'exécuter les fonctions WordPress a été intégré pour prendre en charge le contenu des articles.

apply_filters( 'the_content', $content );

Cela s'exécute lorsque vous affichez the_content() dans votre modèle et inclut des éléments tels que l'expansion de shortcode et la découverte d'oembed. Mais cela ne fonctionne que si votre contenu est formaté correctement. Vous avez dit: "Page Embeds sur WP Codex dit de simplement mettre" l'URL de la vidéo dans la zone de contenu "qui est correcte avec un point de clarification:

Assurez-vous que l'URL est sur sa propre ligne et n'est pas liée par un lien hypertexte.

Votre insert ressemblera à ceci:

$new_post = array(
    'post_title'   => $title,
    'post_content' => 'test
    https://www.youtube.com/watch?v=4g3e8XwVIYc
    https://youtu.be/LPpW_8c5jE4',
    'post_status'  => 'publish',
    'post_author'  => $author,
    'post_type'    => 'post',
);
wp_insert_post( $new_post, true );

Notez les nouvelles lignes pour le contenu de votre message. Cela convertira ces URL YouTube dans les intégrations appropriées lorsqu'elles seront sorties dans votre modèle.

0
MikeNGarrett