Как использовать загрузку медиафайлов на странице настроек темы?

31 янв. 2011 г., 07:09:37
Просмотры: 29K
Голосов: 6

Я хочу реализовать загрузку логотипа на странице настроек моей темы. В настоящее время я следую этому коду

На данный момент я загрузил необходимый jquery для загрузки медиафайлов

function load_only() {
    add_thickbox();
    wp_enqueue_script('jquery-option', get_template_directory_uri() . '/admin/js/jquery.option.js', array('jquery','media-upload','thickbox','jquery-ui-core','jquery-ui-tabs'), '1.0');
}

Вопрос

Как реализовать форму загрузки, используя существующую систему загрузки медиафайлов?

<input id="theme_options_upload" type="text" name="theme_options_upload" value="<?php esc_attr_e( $options['theme_options_upload'] ); ?>" />
<input type="button" name="just_button" value="<?php esc_attr_e('Загрузить'); ?>" />

Я хочу узнать

  1. Как связать кнопку с media-upload.php
  2. После того как мы загрузим изображение и нажмем кнопку Вставить в запись в окне media-upload, изображение должно быть помещено в поле name="theme_options_upload"

Дайте мне знать.

0
Все ответы на вопрос 1
8

Скорее всего, вы сохраняете URL изображения, а не весь тег изображения, и есть отличное руководство, которое объясняет, как использовать медиазагрузчик в вашей собственной теме или плагине: http://www.webmaster-source.com/2010/01/08/using-the-wordpress-uploader-in-your-plugin-or-theme/

Обновление

В случае использования этого в метабоксе вам понадобится ID записи, поэтому измените JS-код с:

jQuery('#upload_image_button').click(function() {
 formfield = jQuery('#upload_image').attr('name');
 tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true');
 return false;
});

на

jQuery('#upload_image_button').click(function() {
 formfield = jQuery('#upload_image').attr('name');
 post_id = jQuery('#post_ID').val();
 tb_show('', 'media-upload.php?post_id='+post_id+'&amp;type=image&amp;TB_iframe=true');
 return false;
});
31 янв. 2011 г. 08:35:47
Комментарии

Браво! Спасибо за дизайн сайта. Есть подсказка, как добавить post_id=$post->ID?

haha haha
31 янв. 2011 г. 09:00:10

используй global $post; а затем $post->ID

Bainternet Bainternet
31 янв. 2011 г. 09:15:39

media-upload.php?post_id=ID&amptype=image&amp;TB_iframe=true в WordPress 3.1 требует post_id=ID, иначе мы получим Notice: Undefined index: post_id. Если мы укажем любой ID, кнопка "Вставить в запись" не отображается. Как это исправить?

haha haha
31 янв. 2011 г. 18:51:58

вставьте ваш код

Bainternet Bainternet
31 янв. 2011 г. 19:07:51

хммм.. точно такой же, как в блоге, который вы опубликовали. если вы прочитаете комментарии в блоге, то найдете ту же проблему, что и у меня. большинство из них спрашивают, как заставить это работать с post_id

haha haha
31 янв. 2011 г. 19:21:06

я обновил ответ

Bainternet Bainternet
31 янв. 2011 г. 19:37:40

В этом коде есть одна странность, и я видел множество вариаций этого примера — строка formfield = jQuery('#upload_image').attr('name'); совершенно бессмысленна, переменная объявлена, но нигде не используется (так что эту строку можно спокойно удалить без каких-либо последствий).

t31os t31os
1 февр. 2011 г. 13:50:50

В данном случае вы правы, но я использовал это в других случаях, где у меня несколько полей для переопределения отправки в редактор.

Bainternet Bainternet
1 февр. 2011 г. 14:14:59
Показать остальные 3 комментариев