Порядок файлов при загрузке в пост WordPress

Ivan @ 17 / 12 / 2019 @ Веб / Памятки / Программирование
( / / / )

Время чтения: ~ 5 мин.

Идут годы, а в WP всё так и не сделали нормальный инструмент для сортировки загруженных изображений в посте (конечно, он был ещё хуже 7 лет назад, и много чего изменилось в лучшую сторону, но тем не менее), а всё почему?

А потому, что они предполагают, что вы будете использовать средства самой ОС для этого. Хотя могли бы и в ВП сделать эту функцию, ёлки. А иначе, если вы ещё подгружаете потом что-то, придётся заново всё рассортировывать 🤬.
Короче говоря, смысл в том, что при загрузке он загружает сначала первую, потом вторую → и так далее. А потом первая становится последней. И это неудобно, особенно когда их много. Поэтому надо просто инвертировать порядок в самой ОС, и всё будет ок — оно присвоит правильные ID загружаемым вложениям.

И можно будет писать что-то вроде этого, и оно будет в нормальном порядке выводиться, как и было задумано. Этот код просто выводит все загрузки поста в виде галереи, например:

<?php if ($images = get_posts(array(
    'order' => 'ASC',
    'orderby' => 'menu_order',
    'post_parent' => $post->ID,
    'post_type' => 'attachment',
    'numberposts' => - 1,
    'post_mime_type' => 'image',
)))
{
    $it = 0;
    foreach ($images as $image)
    {
        $it++;
        $attachmenturl = wp_get_attachment_image_src($image->ID, large);
        $attachmentfull = wp_get_attachment_image_src($image->ID, full);
        $attachmentimage = wp_get_attachment_image_src($image->ID, portfolio_small);
        $imageDescription = apply_filters('the_link', $image->post_content);
        $imageTitle = apply_filters('the_title', $image->post_title);
        echo '... тут вывод в том формате, который нужен в конкретном случае: например, <a href="..."><img sre="" ... /></a>... ';
    }
}
else
{
    echo "No Image";
} ?>

UPD: И фиг там оно работает. 😡 Оно загружается как надо, но именно menu_order не отрабатывает, всё равно приходится рассортировывать вручную, чтобы он прописал им порядок. Я догадываюсь, в чём причина, но как решить это, пока не совсем ясно.
Из справки по wp_query ясно, что:

menu_order‘ – Order by Page Order. Used most often for pages (Order field in the Edit Page Attributes box) and for attachments (the integer fields in the Insert / Upload Media Gallery dialog), but could be used for any post type with distinct ‘menu_order‘ values (they all default to 0).

Но что-то от этого совсем не легче.


Может быть интересно:

Подпишитесь на нас в социальных сетях!

Instagram
VK
Facebook
YouTube!

Подпишитесь на обновления

* нажимая на кнопку «Подписаться», вы даете согласие на обработку своих персональных данных