Benutzerdefinierte Meta-Box gibt nur den letzten Wert auf der Seite zurück

Ich habe einen benutzerdefinierten Post-Typ und ein benutzerdefiniertes Metabox erstellt, wo ich einen neuen Post erstellen und eine Youtube-URL in das Metabox eingeben, und ich rufe auf einer benutzerdefinierten Template-Seite innerhalb eines Iframes, das sich in einem modalen (Drublic CSS-Modal) befindet ) Fenster, in dem durch Klicken auf den Beitragstitel das modale Fenster geöffnet wird.

Das Metabox gibt einen Wert auf der Seite zurück, jedoch zeigt es die neueste URL an, die für jeden der Beiträge eingegeben wird, wenn Sie das Modal öffnen.

Wie bekomme ich jede modale Box, um das ihr zugewiesene Video anzuzeigen?

Wenn das verwirrend ist, ist hier die Seite, auf der sich der Fehler befindet: http://www.josephkatool.com/Pell/media

und unten ist der Code aus dem Post:

  <article class="post" id="post-"> 

Ich habe schon seit einiger Zeit versucht, das herauszufinden, und ich denke, ich verliere meinen Verstand !! Vielen Dank!

Edit: Hier ist der Code, den ich verwende, um die Meta-Boxen zu speichern:

  function pell_video_save_post_class_meta( $post_id, $post ) { if ( !isset( $_POST['pell_video_url_nonce'] ) || !wp_verify_nonce( $_POST['pell_video_url_nonce'], basename( __FILE__ ) ) ) return $post_id; $post_type = get_post_type_object( $post->post_type ); if ( !current_user_can( $post_type->cap->edit_post, $post_id ) ) return $post_id; $new_meta_value = ( isset( $_POST['pell-video-url'] ) ? esc_attr( $_POST['pell-video-url'] ) : '' ); $meta_key = 'pell_video_url'; $meta_value = get_post_meta( $post_id, $meta_key, true ); if ( $new_meta_value && '' == $meta_value ) add_post_meta( $post_id, $meta_key, $new_meta_value, true ); elseif ( $new_meta_value && $new_meta_value != $meta_value ) update_post_meta( $post_id, $meta_key, $new_meta_value ); elseif ( '' == $new_meta_value && $meta_value ) delete_post_meta( $post_id, $meta_key, $meta_value ); } 

Hier ist die js. Es ist das Drublic CSS js Skript:

 (function (global) { 'use strict'; // Storage variable var modal = {}; // Store for currently active element modal.lastActive = undefined; modal.activeElement = undefined; // Polyfill addEventListener for IE8 (only very basic) modal._addEventListener = function (element, event, callback) { if (element.addEventListener) { element.addEventListener(event, callback, false); } else { element.attachEvent('on' + event, callback); } }; // Hide overlay when ESC is pressed modal._addEventListener(document, 'keyup', function (event) { var hash = window.location.hash.replace('#', ''); // If hash is not set if (hash === '' || hash === '!') { return; } // If key ESC is pressed if (event.keyCode === 27) { window.location.hash = '!'; if (modal.lastActive) { return false; } // Unfocus modal.removeFocus(); } }, false); // Convenience function to trigger event modal._dispatchEvent = function (event, modal) { var eventTigger; if (!document.createEvent) { return; } eventTigger = document.createEvent('Event'); eventTigger.initEvent(event, true, true); eventTigger.customData = { 'modal': modal }; document.dispatchEvent(eventTigger); }; // When showing overlay, prevent background from scrolling modal.mainHandler = function () { var hash = window.location.hash.replace('#', ''); var modalElement = document.getElementById(hash); var htmlClasses = document.documentElement.className; var modalChild; var oldModal; // If the hash element exists if (modalElement) { // Get first element in selected element modalChild = modalElement.children[0]; // When we deal with a modal and body-class `has-overlay` is not set if (modalChild && modalChild.className.match(/modal-inner/)) { if (!htmlClasses.match(/has-overlay/)) { // Set an html class to prevent scrolling document.documentElement.className += ' has-overlay'; } // Unmark previous active element if (modal.activeElement) { oldModal = modal.activeElement; oldModal.className = oldModal.className.replace(' is-active', ''); } // Mark modal as active modalElement.className += ' is-active'; modal.activeElement = modalElement; // Set the focus to the modal modal.setFocus(hash); // Fire an event modal._dispatchEvent('cssmodal:show', modal.activeElement); } } else { document.documentElement.className = htmlClasses.replace(' has-overlay', ''); // If activeElement is already defined, delete it if (modal.activeElement) { modal.activeElement.className = modal.activeElement.className.replace(' is-active', ''); // Fire an event modal._dispatchEvent('cssmodal:hide', modal.activeElement); // Reset active element modal.activeElement = null; // Unfocus modal.removeFocus(); } } }; modal._addEventListener(window, 'hashchange', modal.mainHandler); modal._addEventListener(window, 'load', modal.mainHandler); /* * Accessibility */ // Focus modal modal.setFocus = function () { if (modal.activeElement) { // Set element with last focus modal.lastActive = document.activeElement; // New focussing modal.activeElement.focus(); } }; // Unfocus modal.removeFocus = function () { if (modal.lastActive) { modal.lastActive.focus(); } }; // Export CSSModal into global space global.CSSModal = modal; }(window)); 

Solutions Collecting From Web of "Benutzerdefinierte Meta-Box gibt nur den letzten Wert auf der Seite zurück"

Das Problem ist mit Ihrer js. Wenn Sie auf den ersten Videobeitrag klicken. Es fügt dem iframe Videocode hinzu, dh modal. Wenn Sie auf das zweite Video klicken, fügt es keinen Videocode für den zweiten Post zu iframe (modal) hinzu.
Verwirrend?
Aktualisieren Sie Ihre Seite und klicken Sie auf das 2. oder 3. Video. Es wird richtig angezeigt. Klicken Sie nun erneut auf einen Videobeitrag. Es wird nur das Video vom 2. Beitrag angezeigt.

Setzen Sie Ihren iframe zurück, wenn Sie auf ein Video klicken. So wird es zuerst iframe leeren und dann Code dieses Videos hinzufügen.

Wenn immer noch ein Problem. dann füge einfach deine js hier hinzu, erzähle dir, wo das Problem ist /