it-swarm.com.de

Video-Einbettungen funktionieren im Backend, werden jedoch nicht im Frontend analysiert

Wenn ich versuche, ein YouTube-Video auf eine der folgenden Arten einzubetten:

  • Durch Eingabe einer YouTube-URL
  • Durch Eingabe eines [embed] shortcodes
  • Durch Hinzufügen eines Videos über den Medienbrowser (was zu einem [embed] shortcode führt)

Ich sehe das Video ganz gut in der Editoransicht:

 enter image description here 

Aber in der Frontend-Ansicht mit diesem Code:

 $content_desktop = do_shortcode(get_the_content());

Ich sehe

  • bei der Eingabe einer reinen URL: die nicht geparste URL  enter image description here 

  • Wenn Sie einen [embed] shortcode eingeben oder den WYSIWYG-Editor verwenden: im wahrsten Sinne des Wortes nichts  enter image description here 

Dinge, die ich überprüft habe:

  • Ich bin der Administrator, daher sollte es keine Probleme mit Rechten geben
  • Andere Shortcodes funktionieren gut
  • Das DOM zeigt buchstäblich, was ich oben zeige, es gibt keine CSS-Interferenz
  • Die YouTube-Videos, die ich einbetten möchte, ermöglichen das externe Einbetten
  • Es gibt keine Optionen für mich, um "Einstellungen"> "Medien" zu überprüfen (anscheinend war es früher so, dass Sie die Medieneinbettung explizit aktivieren mussten, aber nicht mehr)

Gibt es etwas Bekanntes, das dies verursachen könnte?

1
Pekka 웃

Ich habe mir gerade die Quelle der WP_Embed-Klasse angesehen und es sieht so aus, als würden sie keinen Shortcode registrieren, sondern den the_content-Filter einbinden.

Ändern Sie Ihren Code in

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

oder manuell deren Filter mit so etwas auslösen

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

oder, wenn Sie lieber ein Objekt haben möchten:

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

Siehe auch WP_Embed :: run_shortcode im Codex und Quellcode von class-wp-embed.php .

1
janh