Я пытаюсь получить и вставить изображения вне среды WordPress в пользовательский пост через PHP.
Как переместить / загрузить это изображение в формат папок с годовой датой в WordPress, как это делает WordPress, и установить это изображение в соответствии с пользовательским сообщением?
Кроме того, чтобы загрузить изображение в галерею пользовательских сообщений?
Ниже мой код
$filename = $image['name'];
$target_path = "../wp-content/uploads/";
$target_path = $target_path . $filename;
$wp_filetype = wp_check_filetype(basename($filename), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $wp_upload_dir['baseurl'] . '/' . basename( $filename ),
'post_mime_type' => $wp_filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit',
);
$attach_id = wp_insert_attachment( $attachment, $target_path, $post_id );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
set_post_thumbnail( $post_id, $attach_id );
Мне удалось загрузить изображение в каталог загрузок, но я не могу создать папку года и даты. это какая-нибудь функция wp для него ??
post-thumbnails
wp-insert-post
upload-dir
Фейсал Шехзад
источник
источник
media_sideload_image
к'id'
и он будет возвращать новый идентификатор вложения. Например:$new_att_id = media_sideload_image($image, $post_id, "image description...", 'id'); if(!is_wp_error($new_att_id)) { set_post_thumbnail($post_id, $new_att_id); }
Попробуйте это объяснение загрузки с использованием пути и идентификатора записи .
Вот код (для наследства):
источник
Пожалуйста, обратитесь к следующему коду, который устанавливает избранные изображения программно. http://www.pearlbells.co.uk/code-snippets/set-featured-image-wordpress-programmatically/
источник
Возможно, я неправильно понимаю, но зачем вам это делать вне среды WordPress? Репликация этой функциональности была бы большой работой! WordPress делает гораздо больше, чем просто загружает файл и помещает его в определенный каталог, например, управляет тем, какие пользователи могут загружать файлы, добавляет записи в базу данных для выгрузки и настраивает связи между избранными изображениями, выполняет действия и фильтры для внешних плагинов в зависимости от загрузка файла - все при соблюдении настроек сайта (в отношении соглашений об именах, места загрузки медиафайлов и т. д.).
Если вы просто пытаетесь загрузить файлы без входа в раздел администрирования WordPress, например, для загрузки файлов с внешнего сайта, вам может потребоваться взглянуть на API-интерфейс XML-RPC и, в частности, на
uploadFile
метод.Другой вариант - написать мини API самостоятельно. В основном то, что вы хотели бы сделать, это:
wp_upload_dir()
для получения путиsanitize_file_name()
к каталогу загрузки, а также для создания пути и записи файла в полученное местоположение.wp_insert_attachment()
для хранения вложения в базе данных (wp_check_filetype()
будет полезно для настройкиpost_mime_type
). При желании также установитеpost_parent
и_thumbnail_id
мета-ключ, если хотите.wp_create_nonce()
иwp_verify_nonce()
сделать форму чуть более безопасной.источник
wp_insert_attachment()
, она должна делать то, что вам нужно, я думаю. Я очень не рекомендую вручную изменять базу данных вне WordPress, если вы этим занимаетесь. Вместо этого просто посмотрите на источник WordPress и попытайтесь определить части, отвечающие за добавление данных постов, обработку загрузки файлов и вставку вложений. Другими словами, в значительной степени то, что я изложил в своем ответе выше.