Можно ли создать мета-бокс, который прикрепит к сообщению несколько изображений?
Можно ли создать мета-бокс, который прикрепит к сообщению несколько изображений?
Ответы:
Это полностью зависит от того, что вы подразумеваете под «прикрепить».
В каждом сообщении 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);
}
}
Все эти функции доступны через стандартную кнопку «Добавить мультимедиа» справа от «Загрузить / Вставить» на новом экране поста. После добавления одного изображения вы можете снова нажать «Выбрать файлы» и загрузить второе изображение. Затем третий. Затем четвертый. Столько, сколько вы хотите.
Каждое из этих изображений будет «прикреплено» к сообщению ... даже если они не вставлены в контент.
$post
и, $args
по крайней мере, в двух разных контекстах, что очень затрудняет точное определение того, что именно вы пытаетесь сделать в любой момент. Но я протестировал код, который выложил выше, и он работает ...
Вот полный учебник с исходными файлами, которые делают именно то, что вы хотите.
Вы можете загружать несколько изображений, клонируя поле ввода, а также вы можете просматривать, удалять изображения с помощью ajax, добавлять несколько метабоксов к нескольким / различным типам записей и многое другое.
http://www.deluxeblogtips.com/2010/05/howto-meta-box-wordpress.html
Я также рекомендовал бы проверить 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;
}
// Handle the upload here
}
add_action( 'save_post', 'my_save_post_callback', 1, 2);