web-dev-qa-db-fra.com

Les vidéos incorporées fonctionnent dans le backend, mais ne sont pas analysées dans le frontal

Lorsque j'essaie d'intégrer une vidéo YouTube en utilisant l'une des méthodes suivantes:

  • En entrant une URL YouTube
  • En entrant un [embed] shortcode
  • En ajoutant une vidéo via le navigateur multimédia (ce qui donne un shortcode [embed])

Je vois la vidéo très bien dans la vue de l'éditeur:

 enter image description here 

Mais dans la vue frontale, en utilisant ce code:

 $content_desktop = do_shortcode(get_the_content());

Je vois

  • lors de la saisie d'une URL pure: l'URL non analysée  enter image description here 

  • Lors de la saisie d'un shortcode [embed] ou de l'éditeur WYSIWYG: littéralement rien  enter image description here 

Choses que j'ai vérifiées:

  • Je suis l'utilisateur administrateur donc il ne devrait y avoir aucun problème avec les droits
  • Les autres codes courts fonctionnent bien
  • Le DOM montre littéralement ce que je montre ci-dessus, il n'y a pas d'interférence CSS
  • Les vidéos YouTube que je tente d’intégrer permettent l’intégration externe.
  • Il n'y a pas d'option pour que je puisse vérifier dans "Paramètres"> "Médias" (il semblerait que vous deviez activer explicitement l'intégration du contenu multimédia ici, mais pas plus)

Y at-il quelque chose de bien connu qui pourrait être la cause?

1
Pekka 웃

Je viens de regarder la source de la classe WP_Embed, et il semble qu'ils n'enregistrent pas réellement un shortcode, mais qu'ils soient connectés au filtre the_content.

Changez votre code en

$content_desktop = apply_filters("the_content", get_the_content());

ou déclencher manuellement leur filtre avec quelque chose comme

$content_desktop = WP_Embed::run_shortcode(get_the_content());

ou, si vous préférez avoir un objet:

$myembeds = new WP_Embed;
$content_desktop = $myembeds->run_shortcode(get_the_content());

Voir aussi WP_Embed :: run_shortcode dans le codex et le code source de class-wp-embed.php .

1
janh