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

Это полностью зависит от того, что вы подразумеваете под "прикреплением".
Каждая запись в 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);
}
}
Весь этот функционал доступен через стандартную кнопку "Добавить медиафайл" справа от "Загрузить/Вставить" на экране создания новой записи. После добавления одного изображения вы можете снова нажать "Выбрать файлы" и загрузить второе изображение. Затем третье. Затем четвертое. Столько, сколько вам нужно.
Каждое из этих изображений будет "прикреплено" к записи... даже если они не вставлены в содержимое.

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

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

Вот полное руководство с исходными файлами, которые делают именно то, что вам нужно.
Вы можете загружать несколько изображений, клонируя поле ввода, а также просматривать, удалять изображения с помощью AJAX, добавлять несколько метабоксов к разным типам записей и многое другое.
http://www.deluxeblogtips.com/2010/05/howto-meta-box-wordpress.html

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

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

Да, это вполне возможно. Посмотрите ответ, который я получил по поводу метабоксов. В основном, вам просто нужно добавить хук для 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);
