Я нарешті !! я отримав цю річ, яку я пробував близько 12 разів, і 12 різних способів, але нарешті змусив її працювати, ...
Я створив спеціальний метабокс для завантаження та прикріплення зображень до публікацій, і це не вимагає від вас жахливого завантажувача медіа-завантажувачів, вбудованого в WP. Я ненавиджу цю річ. Ні, те, що я зробив, - це лише група входів (назва, опис, файл), які ви також можете дублювати, щоб додати додаткові вкладення, якщо хочете. Отже, ви заповнюєте поля, вибираєте зображення для завантаження та зберігаєте чернетку або публікуєте публікацію. Щойно до публікації додаються вкладення, метабокс відображатиме поля введення разом із попереднім зображенням доданого зображення для кожного доданого вами вкладеного файлу. Поля заголовка та опису використовуються для генерування метаданих файлів, нічого не зберігається як post_meta, про який я знаю. Наразі це все, що я зараз працював.
Мені потрібно зробити так, що коли ви зберігаєте / публікуєте публікацію, вбудовуєте завантаження / створюєте файли вкладень, вона створить три розміри зображення, як завантажувач wp за замовчуванням, мініатюра, середній, великий, а також збереження зображення в повному розмірі . Якщо це можливо якось. Якщо ні, то я б хотів інакше використовувати add_image_size()
для створення / визначення нових спеціальних розмірів, а також генерувати їх таким чином, після завантаження.
Я не впевнений, яку функцію найкраще використовувати в цьому випадку, можливо, ця image_make_intermediate_size()
функція була б кращою, wp_create_thumbnail()
або wp_crop_image()
... хто знає !!
Я не можу зрозуміти, як мені це робити, якщо мені потрібно запустити wp_handle_upload()
функцію для кожного з них, або, можливо, щось із цим пов'язане wp_generate_attachment_metadata()
. Мене це бентежить, оскільки 3 розміри зображення мають бути пов'язані як варіанти одного вкладеного файлу, і як це зробити.
Я переглянув Інтернет, прочитав джерело кожного файлу, пов’язаного з WP-медіа / завантаження / зображення, і грав майже з кожною функцією для завантаження медіа, і не можу знайти, як WP створює 3 розміри зображень у будь-якому місці або як це зробити це я сам.
У wp-include / media.php image_resize()
функція виглядає так, як це було б найкраще, оскільки це саме те, що має бути. Я просто не можу за все життя зрозуміти, чого я, мабуть, пробував чи намагався робити, але зробив неправильно, щоб зробити ескізи зображення.
Ось моя робоча функція, яка виконує wp_handle_upload()
речі та речі, але вона також повинна створити великий палець у 100 пікселів та зробити версію розміру зображення, максимальної ширини як 500 пікселів, та зберегти як нові файли завантаженого файлу.
function update_attachment(){
global $post;
wp_update_attachment_metadata( $post->ID, $_POST['a_image'] );
if( !empty( $_FILES['a_image']['name'] )) { //New upload
require_once( ABSPATH . 'wp-admin/includes/file.php' );
$override['action'] = 'editpost';
$url = wp_handle_upload( $_FILES['a_image'], $override );
// $medium = image_make_intermediate_size( $uploaded_file['url'], 500, 400, true );
// $thumb = = image_make_intermediate_size( $uploaded_file['url'], 100, 100, true );
if ( isset( $file['error'] )) {
return new WP_Error( 'upload_error', $file['error'] );
}
$array_type = wp_check_filetype
$allowed_file_types = array('image/jpg','image/jpeg','image/gif','image/png');
$name_parts = pathinfo( $name );
$name = trim( substr( $name, 0, - ( 1 + strlen( $name_parts['extension'] )) ));
$type = $file['type'];
$file = $file['file'];
$title = $_POST['a_title'] ? $_POST['a_title'] : $name;
$content = $_POST['a_desc']
$post_id = $post->ID;
$attachment = array(
'post_title' => $title,
'post_type' => 'attachment',
'post_content' => $content,
'post_parent' => $post_id,
'post_mime_type' => $type,
'guid' => $url['url']
);
// Save the data
$id = wp_insert_attachment( $attachment, $_FILES['a_image'][ 'file' ]/*, $post_id - for post_thumbnails*/);
if ( !is_wp_error( $id )) {
$attach_meta = wp_generate_attachment_metadata( $id, $uploaded_file['url'] );
wp_update_attachment_metadata( $attach_id, $attach_meta );
}
update_post_meta( $post->ID, 'a_image', $uploaded_file['url'] );
}
}
Кожен, хто зможе допомогти мені остаточно виправити це, щоб він працював належним чином, був би полюбленим. Я провів стільки смішних незліченних годин чимало різних часів, намагаючись розробити цю річ, і документація відстійна, і ніде не існує хороших дописів, як це зробити.
Спасибі