Сейчас если загружать изображения к записи через загрузчик wordpress, при фронтенд публикации записи, они не прикрепляются к посту. Это и понятно, ведь когда изображения загружаются пост еще не создан и их некуда прикреплять.
То что это очень важно думаю сомнений нет, картинки загруженные для записи должны быть к ней прикреплены.
Я нашел вариант решения, но возможно он не лучший и Андрей сделает по другому, но главное что бы сделал.
Я предлагаю в форме публикации создавать скрытый инпут куда добавлять id загруженых изображений и при публикации поста менять им в базе post_parent на id поста.
Вот рабочий вариант:
Добавим инпут и запишем в него id картинок. Для этого надо вставить этот скрипт в /wp-content/plugins/wp-recall/add-on/publicpost/js/scripts.js
jQuery('input[name="form_id"]').after('<input type="hidden" name="uploaded_imgs" value="">'); $.extend( wp.Uploader.prototype, { success : function( file_attachment ){ var img_list = jQuery('input[name="uploaded_imgs"]').val(); if(!img_list) { jQuery('input[name="uploaded_imgs"]').val(file_attachment.id); } else { var new_img_list = img_list+','+file_attachment.id; jQuery('input[name="uploaded_imgs"]').val(new_img_list); } } });
Теперь при публикации поста прикрепим загруженные изображения к записи, вот php функция:
add_action('transition_post_status','attached_img_to_post', 20, 3); function attached_img_to_post($new_status, $old_status, $post){ // $post->ID ID поста // $_POST['uploaded_imgs'] список id загруженных картинок if(!$_POST['uploaded_imgs']) return false; $img_list = explode(',', $_POST['uploaded_imgs']); foreach ($img_list as $img) { wp_update_post( array( 'ID' => $img, 'post_parent' => $post->ID ) ); } }
За подсказку по wp.Uploader.prototype спасибо, как то пытался решить эту задачу, но не понял куда смотреть, взял это за основу, но подход будет действительно другой.
Загруженные изображения для неопубликованной записи должны помещаться во временную галерею пользователя, которая уже существует внутри плагина.
В общем, благодарю, побольше бы таких идейных) в след. обновлении эта задача будет решена.