Создание метабокса для загрузки нескольких изображений в WordPress

12 янв. 2011 г., 19:10:22
Просмотры: 17.6K
Голосов: 8

Возможно ли создать метабокс, который позволяет прикреплять несколько изображений к записи?

1
Комментарии

Полное руководство по загрузке нескольких изображений с добавлением метабоксов к записи, странице или пользовательскому типу записи можно найти по адресу http://www.emenia.es/plugin-subir-imagenes-campo-personalizado-wordpress/ Оно на испанском языке, но у меня получилось запустить его без проблем.

User User
14 дек. 2011 г. 14:43:49
Все ответы на вопрос 4
2

Это полностью зависит от того, что вы подразумеваете под "прикреплением".

Каждая запись в WordPress уже может иметь несколько вложений - фотографий, документов и т.д. Вы загружаете их с помощью встроенного загрузчика, и все они будут помечены как "прикрепленные" к конкретному ID записи.

Позже вы можете программно обращаться к этим вложениям в других местах. Например, следующий код выведет список всех вложений для конкретной записи (код взят с Snipplr):

$args = array(
    'post_type' => 'attachment',
    'numberposts' => null,
    'post_status' => null,
    'post_parent' => $post->ID
);
$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {
        echo apply_filters('the_title', $attachment->post_title);
        the_attachment_link($attachment->ID, false);
    }
}

Весь этот функционал доступен через стандартную кнопку "Добавить медиафайл" справа от "Загрузить/Вставить" на экране создания новой записи. После добавления одного изображения вы можете снова нажать "Выбрать файлы" и загрузить второе изображение. Затем третье. Затем четвертое. Столько, сколько вам нужно.

Каждое из этих изображений будет "прикреплено" к записи... даже если они не вставлены в содержимое.

12 янв. 2011 г. 19:28:14
Комментарии

По какой-то странной причине этот код выводит только первое вложение в шаблоне, хотя остальные тоже прикреплены. Есть идеи? Вот код... http://dl.dropbox.com/u/497583/code/wp-attactments.txt

agileapricot agileapricot
12 янв. 2011 г. 23:14:30

Тебе нужно использовать другие переменные. Ты используешь и $post, и $args как минимум в двух разных контекстах, из-за чего очень сложно понять, что именно ты пытаешься сделать в каждый момент. Но я проверил код, который опубликовал выше, и он действительно работает...

EAMann EAMann
12 янв. 2011 г. 23:30:02
2

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

http://www.deluxeblogtips.com/2010/05/howto-meta-box-wordpress.html

12 янв. 2011 г. 19:57:30
Комментарии

Я поддерживаю. Работает просто отлично.

Manny Fleurmond Manny Fleurmond
13 янв. 2011 г. 07:05:58

Хотя предоставленная вами ссылка теперь не работает, данный проект превратился в полноценный удобный плагин/библиотеку для разработчиков. Смотрите: https://wordpress.org/plugins/meta-box/ и https://github.com/wpmetabox ... Выглядит как отличный продукт.

Kerry Randolph Kerry Randolph
21 мая 2019 г. 16:33:09
0

Также рекомендую ознакомиться с http://www.wpalchemy.com. WPAlchemy — это потрясающий "класс" (почти как плагин) для простого добавления пользовательских метабоксов на ваш сайт. Я активно его использую и впечатлен простотой использования, а также преданностью разработчика и растущим сообществом.

12 янв. 2011 г. 23:35:22
0

Да, это вполне возможно. Посмотрите ответ, который я получил по поводу метабоксов. В основном, вам просто нужно добавить хук для save_post и проверить поле nonce.

function my_save_post_callback( $post_id, $post )
{
    if ( empty($_POST) || !isset($_POST['my_custom_metabox']) || !wp_verify_nonce( $_POST['my_custom_metabox'], plugin_basename( __FILE__ ) ) )
    {
        return $post->ID;
    }

    // Обработка загрузки здесь

}
add_action( 'save_post', 'my_save_post_callback', 1, 2);
12 янв. 2011 г. 19:23:09