Wie kann ich die Youtube / Vimeo-Video-ID beim benutzerdefinierten Post-Typ anzeigen, wenn der Nutzer sie in das benutzerdefinierte Meta-Feld eingibt?

Ich habe einen 2x Shortcode erstellt, der ein Youtube-Video und ein Vimeo-Video anzeigt, wenn der Nutzer die Video-ID eingibt, zum Beispiel: [youtube id = “”] [vimeo id = “”].

Anstatt dies in meinem Beitrag einzugeben, versuche ich eine benutzerdefinierte Metabox zu erstellen, in die der Benutzer die ID eingeben kann, und dann wird diese angezeigt.

Bisher war ich in der Lage, ein Plugin zu erstellen, um die Meta-Box anzuzeigen, aber ich bin mir nicht sicher, wie ich es bekommen kann, um die youtube / vimeo ID zu speichern und das Video anzuzeigen.

Brauche ich 2x verschiedene Meta-Boxen? Eine, in der der Benutzer die Youtube-Video-ID eingeben kann und die andere, in die die vimeo-ID eingegeben werden kann, und diese wird dann am Frontend angezeigt?

Der Code, den ich für die Meta-Box habe, ist:

add_action( 'add_meta_boxes', 'cd_meta_box_add' ); function cd_meta_box_add() { add_meta_box( 'my-meta-box-id', 'Enter Video ID', 'cd_meta_box_cb', 'videos', 'normal', 'high' ); } function cd_meta_box_cb( $post ) { $video_type = get_post_meta($post->ID,'my_video_type',true); $video_id = get_post_meta($post->ID,'my_meta_box_text',true); wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' ); ?> 

<option value="youtube">Youtube <option value="vimeo">Vimeo

<input type="text" name="my_meta_box_text" id="my_meta_box_text" value="" />

array( // on allow a tags 'href' => array() // and those anchords can only have href attribute ) ); // Probably a good idea to make sure your data is set if( isset( $_POST['my_meta_box_text'] ) ) update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) ); } ?>

In single.php muss ich eine Abfrage ausführen, um das Video basierend auf dem, was der Benutzer in der Metabox eingibt, anzuzeigen. Mein Code dafür ist:

  ID,'my_video_type',true) == "youtube"){ $youtube_id = get_post_meta($post->ID,'my_meta_box_text',true); } if(get_post_meta($post->ID,'my_video_type',true) == "vimeo"){ $vimeo_id = get_post_meta($post->ID,'my_meta_box_text',true); } ?> 

Dies zeigt jedoch nichts an. Ich habe mir die Haare ausgezogen, um das zu sortieren. Wenn jemand helfen kann, wird es sehr geschätzt. Danke im Voraus.

Solutions Collecting From Web of "Wie kann ich die Youtube / Vimeo-Video-ID beim benutzerdefinierten Post-Typ anzeigen, wenn der Nutzer sie in das benutzerdefinierte Meta-Feld eingibt?"

Haben Sie benutzerdefinierte Post-Typ-Videos? Wenn nicht, Videos zu posten

 add_meta_box( 'my-meta-box-id', 'Enter Video ID', 'cd_meta_box_cb', 'post', 'normal', 'high' ); 

Ihr Code ist in Ordnung, aber Sie speichern die Auswahlbox für den Videotyp nicht, Sie haben gerade das Eingabefeld für die ID aktualisiert.

add_action('save_post', 'cd_meta_box_save'); diesen Code in add_action('save_post', 'cd_meta_box_save');

 if( isset( $_POST['my_meta_box_text'] ) && isset( $_POST['my_video_type'] ) ) { update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) ); update_post_meta( $post_id, 'my_video_type', strip_tags($_POST['my_video_type']) ); } 

Außerdem wird der ausgewählte Videotyp gespeichert und nach dem Versuch mit dem folgenden Code wiedergegeben.

BEARBEITET:

 global $post; if (get_post_meta($post->ID, 'my_video_type', true) == "youtube") { echo do_shortcode('[youtube id="'.get_post_meta($post->ID, 'my_meta_box_text', true).'"]'); } if (get_post_meta($post->ID, 'my_video_type', true) == "vimeo") { echo do_shortcode('[vimeo id="'.get_post_meta($post->ID, 'my_meta_box_text', true).'"]'); } 

Youtube und Vimeo Kurzwahl:

 function wp_youtube_video($atts) { extract(shortcode_atts(array('id' => ''), $atts)); return ''; } add_shortcode('youtube', 'wp_youtube_video'); function wp_vimeo_video($atts) { extract(shortcode_atts(array('id' => ''), $atts)); return ''; } add_shortcode('vimeo', 'wp_vimeo_video');