Поддержка Проблемы и решения Получить ID картинки

  • Хочу сделать что бы при загрузке, изображение переименовывались на сервере по маске — Id пользователя_категория к которой принадлежит пост к которому прикреплена картинка_id изображения.

    Для переименования использую

    function make_filename_hash($filename) {
        $current_user = wp_get_current_user();
        $info = pathinfo($filename);
        $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
        $name = $current_user->ID . '_' . $filename;
        return ($name) . $ext;
    }

    ИД пользователя добавляется, как получить ид самого изображения и ид поста к которому принадлежит изображение?

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Получить ID

    https://wordpress.org/plugins/reveal-ids-for-wp-admin-25/ Этот плагин возвращает ID всех составляющих WP на свои места….

    Это немного не то, мне нужно в название фала вписать его id, используя код выше.

    мне нужно в название фала вписать его id,

    Может я и не прав, но мне показалось, что , прежде чем его вписать — его надо узнать. Для чего и существует предложенный мной плагин. Да и вопрос поставлен

    Получить ID

    Konstantin, Вы шутите или правда не понимаете о чем речь?
    akefa нужно во время сохранения файла не «руками» вписывать ID поста и файла, но автоматически кодом.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    как получить ид самого изображения и ид поста к которому принадлежит изображение?

    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 );
    
    }
    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    $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) — две совершенно разные связи записей, и они прекрасно существуют независимо друг от друга. Что и как у Вас сделано?

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Тема «Получить ID картинки» закрыта для новых ответов.