Ziehe den Youtube Link vom 2. WP_Editor

Ich habe 2 WP_Editors, 1 ist der Hauptredakteur, den ich für Inhalt verwende und der 2. ist ein Editor, den ich benutze, damit der Benutzer Videos und irgendeinen Extrainhalt einfügt, der das Video beschreibt. Meine Frage ist, gibt es eine einfache Möglichkeit, die Video-URL vor (während oder nach) oEmbed packt es zu ziehen? Ich habe versucht, ein preg_match aber ich habe das Gefühl, dass es zu viele Varianten der Youtube-URL gibt, um effizient zu finden.

Hier ist, was ich versucht habe:

 $videoContent = get_post_meta($post->ID, 'videoContent', true); $search = '#(?:www\.)?(?:youtu\.be/|youtube\.com(?:/embed/|/v/|/watch?.*?v=))([\w\-]{10,12})#x'; $url = preg_match($search, $videoContent); print_r($url); 

Ich habe versucht, herum zu suchen, aber ich kann nicht scheinen, die richtigen Schlüsselwörter einzugeben, um irgendetwas nützliches, nur “wie man einbetten” und so hochzuziehen.

Solutions Collecting From Web of "Ziehe den Youtube Link vom 2. WP_Editor"

Vielleicht sollten Sie einfach ein benutzerdefiniertes Feld hinzufügen, um die URL selbst anstelle des wp_editor textarea zu akzeptieren; Hängen Sie dann das Video an, nachdem Sie mit der Eingabe gearbeitet haben.

Lassen Sie es mich wissen, wenn Sie Hilfe benötigen, um das einzurichten.

ODER:

Sie könnten ein separates Textfeld hinzufügen, um nur durch Kommas getrennte oder durch Zeilenumbrüche getrennte URLs zu akzeptieren (da Sie unten angegeben haben, dass Sie möglicherweise mehrere Videoeinbettungen benötigen)

Hier ist ein Code, der beim Speichern verwendet wird und die TextArea-Eingabe bereinigt:

 if ( isset( $_REQUEST['your_url_list'] ) ): $input = $_REQUEST['your_url_list']; $data = preg_split("/[\r\n,]+/", $input, -1, PREG_SPLIT_NO_EMPTY); $option_list = array(); foreach( $data as $d ) $option_list[] = trim( $d ); update_post_meta( $post_id, 'your_url_list', maybe_serialize( $option_list ) ); endif; 

Da dein Problem darin besteht, YouTube-URL aus HTML-Inhalten zu finden, kann folgender Link hilfreich sein: https://stackoverflow.com/a/5831191/147618

Hier wird der Regex vom selben Link kopiert.

 // Linkify youtube URLs which are not already links. function linkifyYouTubeURLs($text) { $text = preg_replace('~ # Match non-linked youtube URL in the wild. (Rev:20130823) https?:// # Required scheme. Either http or https. (?:[0-9A-Z-]+\.)? # Optional subdomain. (?: # Group host alternatives. youtu\.be/ # Either youtu.be, | youtube # or youtube.com or (?:-nocookie)? # youtube-nocookie.com \.com # followed by \S* # Allow anything up to VIDEO_ID, [^\w\s-] # but char before ID is non-ID char. ) # End host alternatives. ([\w-]{11}) # $1: VIDEO_ID is exactly 11 chars. (?=[^\w-]|$) # Assert next char is non-ID or EOS. (?! # Assert URL is not pre-linked. [?=&+%\w.-]* # Allow URL (query) remainder. (?: # Group pre-linked alternatives. [\'"][^<>]*> # Either inside a start tag, |  # or inside  element text contents. ) # End recognized pre-linked alts. ) # End negative lookahead assertion. [?=&+%\w.-]* # Consume any URL (query) remainder. ~ix', 'YouTube link: $1', $text); return $text; }