Получить ID
https://wordpress.org/plugins/reveal-ids-for-wp-admin-25/ Этот плагин возвращает ID всех составляющих WP на свои места….
Это немного не то, мне нужно в название фала вписать его id, используя код выше.
мне нужно в название фала вписать его id,
Может я и не прав, но мне показалось, что , прежде чем его вписать — его надо узнать. Для чего и существует предложенный мной плагин. Да и вопрос поставлен
Получить ID
Konstantin, Вы шутите или правда не понимаете о чем речь?
akefa нужно во время сохранения файла не «руками» вписывать ID поста и файла, но автоматически кодом.
как получить ид самого изображения и ид поста к которому принадлежит изображение?
ID изображения можно получить только после его вставки в базу — вашу функцию придётся перевесить на действие add_attachment и добавить переименование уже созданного файла и записи в базе.
ID записи можно получить из поля post_parent объекта изображения.
Sergey Biryukov, спасибо за помощь, не могли бы вы показать маленький пример такого алгоритма?
Все равно не получается получить ИД изображения
add_action('add_attachment', 'rename_attacment');
function rename_attacment($post_ID){
$current_user = wp_get_current_user();
$post = get_post($post_ID);
$file = get_attached_file($post_ID);
$post_thumbnail_id = get_post_thumbnail_id($post_ID);
$path = pathinfo($file);
$newfilename = $current_user->ID . '_' . $post_thumbnail_id . '_' . $path['filename'];
$newfile = $path['dirname']."/".$newfilename.".".$path['extension'];
rename($file, $newfile);
update_attached_file( $post_ID, $newfile );
}
Так тоже нету результата
add_action('add_attachment', 'rename_attacment');
function rename_attacment($post_ID){
$args = array(
'post_parent' => $postID,
'post_type' => 'attachment'
);
$attachments = get_children( $args );
$current_user = wp_get_current_user();
$post = get_post($post_ID);
$file = get_attached_file($post_ID);
$id = get_the_ID();
$path = pathinfo($file);
foreach($attachments as $attachment) {
$newfilename = $current_user->ID . '_' . $attachment->ID . '_' . $path['filename']; }
$newfile = $path['dirname']."/".$newfilename.".".$path['extension'];
rename($file, $newfile);
update_attached_file( $post_ID, $newfile );
}
$post_ID — это ID изображения, а не записи:
$attachment = get_post( $post_ID );
$attachment->post_parent — это ID записи.
Все работает, спасибо, еще один вопрос, я загружаю изображения из front end сайта, получается что указываю название записи и его миниатюру, только не пойму как определить id только что созданной записи, при переименовании самого файла, его id уже показывает, а id поста — 0.
add_action('add_attachment', 'rename_attacment');
function rename_attacment($post_ID){
$attachment = get_post( $post_ID );
$current_user = wp_get_current_user();
$post = get_post($post_ID);
$file = get_attached_file($post_ID);
$path = pathinfo($file);
$newfilename = $current_user->ID . '_' . $current_user->country . '_' . $post_ID . '_' . $attachment->post_parent . '_' . $path['filename'];
$newfile = $path['dirname']."/".$newfilename.".".$path['extension'];
rename($file, $newfile);
update_attached_file( $post_ID, $newfile );
}
Проще говоря как можно получить ID записи имея только ID изображения которое прикреплено к посту?
Модератор
Юрій
(@yube)
Проще говоря как можно получить ID записи имея только ID изображения которое прикреплено к посту?
Постом выше Сергей написал:
$attachment = get_post( $post_ID );
$attachment->post_parent — это ID записи.
Этот код работает только если зайти в созданную запись и добавить фото, а я с frontenda добавляю сразу запись и миниатюру к ней и тогда фу-я выдает 0 вместо id поста, вот в чем проблема.
Модератор
Юрій
(@yube)
и тогда фу-я выдает 0 вместо id поста, вот в чем проблема.
Видимо, функция срабатывает до того, как картинка прикрепляется к записи, если вообще прикрепляется. Миниатюра (Post Thumbnail) и прикрепленный/вложенный медиафайл (Attachment) — две совершенно разные связи записей, и они прекрасно существуют независимо друг от друга. Что и как у Вас сделано?