WordPress стандартная разметка галереи с пользовательскими размерами изображений - PullRequest
0 голосов
/ 25 сентября 2019

Несколько месяцев назад, основываясь на коде Stack и поддержке некоторых пользователей, я создал собственную HTML-разметку для галереи WP по умолчанию.Он содержит нестандартные размеры изображения, и они зависят от размера ширины экрана.Теперь все работало нормально.Я ничего не менял, но теперь эти новые размеры изображений не отображаются.Конечно, размеры миниатюр были созданы, они работают в другой части темы.Мой код выглядит так:

add_filter('post_gallery', 'custom_gallery', 10, 2);
function custom_gallery($output, $attr) {
global $post;

if (isset($attr['orderby'])) {
    $attr['orderby'] = sanitize_sql_orderby($attr['orderby']);
    if (!$attr['orderby'])
        unset($attr['orderby']);
}

extract(shortcode_atts(array(
    'order' => 'ASC',
    'orderby' => 'menu_order ID',
    'id' => $post->ID,
    'itemtag' => 'dl',
    'icontag' => 'dt',
    'captiontag' => 'dd',
    'columns' => 3,
    'include' => '',
    'exclude' => ''
), $attr));

$id = intval($id);
if ('RAND' == $order) $orderby = 'none';

if (!empty($include)) {
    $include = preg_replace('/[^0-9,]+/', '', $include);
    $_attachments = get_posts(array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby));

    $attachments = array();
    foreach ($_attachments as $key => $val) {
        $attachments[$val->ID] = $_attachments[$key];
    }
}

if (empty($attachments)) return '';

$output = "<div class=\"gallery-wrapper\">\n";

$output .= "<ul class=\"gallery-elements\">\n";

foreach ($attachments as $id => $attachment) {

    $img = wp_prepare_attachment_for_js($id);

    $url = $img['sizes']['full']['url'];
    $caption = $img['caption'];
    $alt = $img['alt'];

    if (!array_key_exists('columns', $attr) || !intval($attr['columns'])) {
      $output .= "<li class=\"gallery-item gallery-item-3\">\n";
      $url1s =  $img['sizes']['gallery-3col-small']['url'];
      $url1b =  $img['sizes']['gallery-3col-small-retina']['url'];
      $url2s =  $img['sizes']['gallery-3col-medium']['url'];
      $url2b =  $img['sizes']['gallery-3col-medium-retina']['url'];
      $url3s =  $img['sizes']['gallery-3col-bigger']['url'];
      $url3b =  $img['sizes']['gallery-3col-bigger-retina']['url'];
      $url4s =  $img['sizes']['gallery-3col-huge']['url'];
      $url4b =  $img['sizes']['gallery-3col-huge-retina']['url'];
      $url5s =  $img['sizes']['gallery-3col-monster']['url'];
      $url5b =  $img['sizes']['gallery-3col-monster-retina']['url'];
      $output .= 
      "<a href=\"$url\" data-fancybox=\"gallery\" title=\"$alt\">
      <picture class=\"lozad\" data-src=\"$url5s 1x, $url5b 2x\" data-alt=\"$alt\" title=\"$alt\">
      <source media=\"(min-width: 1440px)\" srcset=\"$url5s 1x, $url5b 2x\">
      <source media=\"(min-width: 1024px)\" srcset=\"$url4s 1x, $url4b 2x\">
      <source media=\"(min-width: 768px)\" srcset=\"$url3s 1x, $url3b 2x\">
      <source media=\"(min-width: 425px)\" srcset=\"$url2s 1x, $url2b 2x\">
      <source media=\"(min-width: 300px)\" srcset=\"$url1s 1x, $url1b 2x\">
      </picture>
      </a>";

      if ($caption) { 
          $output .= "<div class=\"gallery-caption \">{$caption}</div>\n";
      }
      $output .= "</li>\n";
    }

    else if ($attr['columns'] == 1) {

      // output for 1 row

    } else if ($attr['columns'] == 2) {

      // output for 2 rows

    } else if ($attr['columns'] == 4) {

      // output for 4 rows
    }
}

$output .= "</ul>\n";
$output .= "</div>\n";

return $output;
}

add_filter( 'use_default_gallery_style', '__return_false' );

Эта разметка работает, но URL-адреса изображений нет.В чем может быть проблема?

...