Intereting Posts
add_query_vars и add_rewrite_rules Примените фильтр the_title, чтобы публиковать заголовки и встроенный плагин для совместного использования социальных сетей, но не навигационное меню Как обновить измененные плагины? Использование post_class для стилей сообщений indivdually Могу ли я изменить ссылку регистрации по умолчанию (без htaccess)? Ошибка настройки шаблона темы WP 3.8 Подключить формы в WP к внешней базе данных Файл .htaccess по умолчанию для WordPress? Скрыть определенные типы сообщений от редакторов Как сохранить параметры url все время, когда пользователь просматривает мой сайт? Должен ли я сначала определить устройство или страницу? Рекомендуемое изображение не показано и получение ошибки «Объект класса WP_Error не может быть преобразован в int» Каждый раз, когда я обновляю или устанавливаю плагин, я получаю сообщение об ошибке «Ошибка подключения базы данных в WordPress» Какой плагин можно использовать для создания списка / слайд-шоу из цветных изображений? Есть ли способ добавить FLV видео в player.js в WordPress?

Как создать настраиваемый мета-ящик для добавления видео на mp4 на страницу?

Я купил код (как я php и jquery новичок) из нескольких разных сообщений, чтобы попытаться получить поле ввода URL-адреса видео mp4 в wordpress admin. Я смог загрузить медиа-загрузчик для отображения, выбрать файл и выбрать, чтобы заполнить поле формы URL-адресом в wordpress admin, однако при нажатии кнопки обновления URL-адрес исчезает. Я не могу на всю жизнь понять, что мне нужно сделать, чтобы отобразить этот URL после обновления страницы. Любая помощь будет принята с благодарностью! Вот код, который я добавил в мои functions.php (пожалуйста, не обращайте внимания на то, что id и т. Д. Называется «загрузить изображение», в отличие от видео. Я изменю все это, как только я его заработаю):

add_action('plugins_loaded', function(){ if($GLOBALS['pagenow']=='post.php'){ add_action('admin_print_scripts', 'my_admin_scripts'); add_action('admin_print_styles', 'my_admin_styles'); } }); function my_admin_scripts() { wp_enqueue_script('jquery'); wp_enqueue_script('media-upload'); wp_enqueue_script('thickbox'); } function my_admin_styles() { wp_enqueue_style('thickbox'); } add_action('add_meta_boxes', function(){ add_meta_box('my-metaboxx1', 'my-metaboxx1-title','func99999', get_post_types(),'normal'); }, 9); function func99999($post){ $attachment =get_post_meta($post->ID,'my-image-for-post', true); ?> 

Вот HTML для поля формы:

 <label for="upload_image"> <input id="upload_image" type="text" size="36" name="ad_image" value="<?php echo $attachment; ?>" /> <input id="upload_image_button" class="button" type="button" value="Upload Image" /> <br />Enter a URL or upload an image </label> 

Вот jQuery:

 <script> jQuery(document).ready(function($){ var custom_uploader; $('#upload_image_button').click(function(e) { e.preventDefault(); //If the uploader object has already been created, reopen the dialog if (custom_uploader) { custom_uploader.open(); return; } //Extend the wp.media object custom_uploader = wp.media.frames.file_frame = wp.media({ title: 'Choose Image', button: { text: 'Choose Image' }, multiple: false }); //When a file is selected, grab the URL and set it as the text field's value custom_uploader.on('select', function() { attachment = custom_uploader.state().get('selection').first().toJSON(); $('#upload_image').val(attachment.url); $('#upload_image').attr("src", attachment.url); }); //Open the uploader dialog custom_uploader.open(); }); }); </script> 

Вот что я использую, чтобы попытаться сохранить поле ввода:

 add_action( 'save_post', function ($post_id) { if (isset($_POST['upload_image'])){ update_post_meta($post_id, 'my-image-for-post',$_POST['upload_image']); } }); 

Возможно ли, что мне нужно изменить значение в этой строке или есть большая проблема?

 <input id="upload_image" type="text" size="36" name="ad_image" value="<?php echo $attachment; ?>" /> 

Solutions Collecting From Web of "Как создать настраиваемый мета-ящик для добавления видео на mp4 на страницу?"

Вы были близки. Это похоже на то, что я сделал недавно. Вот переписывание вашего кода, который работает. Кроме того, я изменил слово «изображение» на «видео» во всей функции, чтобы оно было точно названо. Наконец, я изменил ориентацию на панели администратора, чтобы этот мета-ящик появился над редактором содержимого. Первый:

 // add necessary scripts add_action('plugins_loaded', function(){ if($GLOBALS['pagenow']=='post.php'){ add_action('admin_print_scripts', 'my_admin_scripts'); add_action('admin_print_styles', 'my_admin_styles'); } }); function my_admin_scripts() { wp_enqueue_script('jquery'); wp_enqueue_script('media-upload'); wp_enqueue_script('thickbox'); } function my_admin_styles() { wp_enqueue_style('thickbox'); } 

Затем добавьте мета-поле, а также html для поля формы и кнопки загрузки:

 add_action('add_meta_boxes', function(){ add_meta_box('video-metabox', 'Add a Video','func99999', get_post_types(),'top', 'high'); }, 9); function func99999($post){ $url =get_post_meta($post->ID,'video-for-post', true); ?> <label for="video_URL"> <input id="video_URL" type="text" size="36" name="video_URL" value="<?php echo $url;?>" /> <input id="upload_video_button" class="button" type="button" value="Choose a Video" /> <br />Choose a video from the media library then, update your post/page to save it.<br /><br /> // This is to display the video in the admin area <video class="video" controls> <source src="<?php echo $url;?>" type="video/mp4" id="vidsrc"> Your browser does not support HTML5 video. </video> </label> 

Затем добавьте свой jquery (я добавил строку css, чтобы выделить некоторое пространство над мета-полем):

 <script> jQuery(document).ready(function($){ $('#video-metabox.postbox').css('margin-top','30px'); var custom_uploader; $('#upload_video_button').click(function(e) { e.preventDefault(); //If the uploader object has already been created, reopen the dialog if (custom_uploader) { custom_uploader.open(); return; } //Extend the wp.media object custom_uploader = wp.media.frames.file_frame = wp.media({ title: 'Choose a Video', button: { text: 'Choose a Video' }, multiple: false }); //When a file is selected, grab the URL and set it as the text field's value custom_uploader.on('select', function() { attachment = custom_uploader.state().get('selection').first().toJSON(); $('#video_URL').val(attachment.url); }); //Open the uploader dialog custom_uploader.open(); }); }); </script> 

Затем укажите функцию сохранения для URL:

 <?php } add_action( 'save_post', function ($post_id) { if (isset($_POST['video_URL'])){ update_post_meta($post_id, 'video-for-post',$_POST['video_URL']); } }); 

Наконец, добавьте функцию для перемещения мета-поля над редактором содержимого. Это создает местоположение, называемое top на вашей странице администратора, поэтому обязательно сопоставьте позицию и приоритет в аргументах, содержащихся в коде, чтобы добавить мета-окно в «верх» и установить приоритет «высокий». Если вы не хотите переместить мета-поле вверх, просто удалите эту функцию и измените код в аргументах мета-поля на что-то еще, например «нормальное» или «боковое», и измените приоритет с «высокого» на «по умолчанию», Вы также можете удалить строку jquery «$ ('# video-metabox.postbox»). Css (' margin-top ',' 30px '); для удаления места, если не поставить мета-поле над редактором содержимого:

 add_action('edit_form_after_title', function() { do_meta_boxes(get_current_screen(), 'top', $post); unset($wp_meta_boxes[get_post_type($post)]['top']); }); не add_action('edit_form_after_title', function() { do_meta_boxes(get_current_screen(), 'top', $post); unset($wp_meta_boxes[get_post_type($post)]['top']); }); 

Если вам нужно, чтобы этот мета-ящик отображался только на определенном шаблоне страницы, как я, вы можете просто изменить эту последнюю функцию на следующее:

 add_action('edit_form_after_title', function() { global $post, $wp_meta_boxes; if ( 'template-name.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) { do_meta_boxes(get_current_screen(), 'top', $post); unset($wp_meta_boxes[get_post_type($post)]['top']); } }); не add_action('edit_form_after_title', function() { global $post, $wp_meta_boxes; if ( 'template-name.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) { do_meta_boxes(get_current_screen(), 'top', $post); unset($wp_meta_boxes[get_post_type($post)]['top']); } });