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

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

Время чтения: ~ 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!
Telegram!

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



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