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

8

Можно ли создать мета-бокс, который прикрепит к сообщению несколько изображений?

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

Ответы:

7

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

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

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

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

Каждое из этих изображений будет «прикреплено» к сообщению ... даже если они не вставлены в контент.

EAMann
источник
По какой-то странной причине я могу получить только этот код для вывода первого вложения в шаблоне, хотя остальные прикреплены. Любые идеи? Вот код ... dl.dropbox.com/u/497583/code/wp-attactments.txt
agileapricot
Вам нужно использовать несколько разных переменных. Вы используете оба $postи, $argsпо крайней мере, в двух разных контекстах, что очень затрудняет точное определение того, что именно вы пытаетесь сделать в любой момент. Но я протестировал код, который выложил выше, и он работает ...
EAMann
6

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

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

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

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

internetross
источник
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;
    }

    // Handle the upload here

}
add_action( 'save_post', 'my_save_post_callback', 1, 2);
Zack
источник