Intereting Posts
register_post_type не работает в wordpress 3.6 Как я могу удалить несколько сообщений сразу из интерфейса? Отображать персонализированный пост на главной странице на основе выбора метабокса Комментарии Jetpack Изменить текст заполнителя Изображение заголовка является перекрывающейся боковой панелью? Как вставить массив терминов с помощью wp_insert_term? Детская тема на style.min.css Предотвращать доступ пользователей к mp3 в моей папке uploads? Перемещение блога из Tumblr в WordPress Как включить HTML в выдержки? Как создать короткий код для отображения описания категории? Как получить следующий и предыдущий заголовок изображения из вложения или галереи? Как передать внешнюю функцию WP_REST_Request Загружать и прикреплять к сообщению несколько файлов изображений Проблема создания пользовательской функции санитизации для раскрывающегося списка пользователей

Добавить кнопку «загрузить медиа» в поле мета-поля

У меня есть пользовательский пост, у которого есть метатег, который должен использовать загрузку файла (для видеофайлов). Мне интересно, каков правильный способ добавления кнопки «Загрузить», которая указывает на загрузчик медиафайлов WordPress и устанавливает URL выбранного загруженного файла в текстовое поле, которое вызвало связь с кнопкой загрузки.

Я не ищу код для создания фактической опции метатега, но для того, чтобы правильно добавить кнопку массовой загрузки WordPress.

См. Этот скелет загрузчика мультимедиа . Вы также можете использовать его в своей настраиваемой разметке, например, в Meta Box.

Подсказка, проверьте, что вы используете только скрипты на странице, где вы активируете свой мета-ящик. В противном случае часто возникает проблема со страницами по умолчанию и загрузчиком.

Теперь попытка очистить важные части, чтобы включить загрузчика в вашу пользовательскую часть.

Сначала включите кнопку в мета-окне:

<input id="upload_image" type="text" size="36" name="upload_image" value="" /> <input id="upload_image_button" type="button" value="Upload Image" /> 

Теперь запустите скрипты:

 function my_admin_scripts() { wp_enqueue_script('media-upload'); wp_enqueue_script('thickbox'); wp_register_script('my-upload', WP_PLUGIN_URL.'/my-script.js', array('jquery','media-upload','thickbox')); wp_enqueue_script('my-upload'); } function my_admin_styles() { wp_enqueue_style('thickbox'); } // better use get_current_screen(); or the global $current_screen if (isset($_GET['page']) && $_GET['page'] == 'my_plugin_page') { add_action('admin_print_scripts', 'my_admin_scripts'); add_action('admin_print_styles', 'my_admin_styles'); } 

Последняя часть – это ваш собственный скрипт для использования в нем толстого ящика и загрузчика.

 jQuery(document).ready( function( $ ) { $('#upload_image_button').click(function() { formfield = $('#upload_image').attr('name'); tb_show( '', 'media-upload.php?type=image&amp;TB_iframe=true' ); return false; }); window.send_to_editor = function(html) { imgurl = $('img',html).attr('src'); $('#upload_image').val(imgurl); tb_remove(); } }); 

Решение:

1) в файле functions.php добавьте блок для регистрации необходимых скриптов:

 // 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'); } // //wp_register_script('my-upload', WP_PLUGIN_URL.'/my-script.js', array('jquery','media-upload','thickbox')); wp_enqueue_script('my-upload'); function my_admin_styles() { wp_enqueue_style('thickbox'); } 

2), а затем добавьте блок метаболизма :

 add_action('add_meta_boxes', function(){ add_meta_box('my-metaboxx1', 'my-metaboxx1-title','func99999', get_post_types(),'normal'); }, 9); function func99999($post){ $url =get_post_meta($post->ID,'my-image-for-post', true); ?> <input id="my_image_URL" name="my_image_URL" type="text" value="<?php echo $url;?>" style="width:400px;" /> <input id="my_upl_button" type="button" value="Upload Image" /><br/><img src="<?php echo $url;?>" style="width:200px;" id="picsrc" /> <script> jQuery(document).ready( function( $ ) { jQuery('#my_upl_button').click(function() { window.send_to_editor = function(html) { imgurl = jQuery(html).attr('src') jQuery('#my_image_URL').val(imgurl); jQuery('#picsrc').attr("src",imgurl); tb_remove(); } formfield = jQuery('#my_image_URL').attr('name'); tb_show( '', 'media-upload.php?type=image&amp;TB_iframe=true' ); return false; }); }); </script> <?php } add_action( 'save_post', function ($post_id) { if (isset($_POST['my_image_URL'])){ update_post_meta($post_id, 'my-image-for-post',$_POST['my_image_URL']); } }); 


ps, если вам нужно несколько полей, тогда вы можете легко сделать так: http://pastebin.com/raw/xpU1ch2W