Пользовательская функция my_post_gallery для хука post_gallery не возвращает изображения, когда количество изображений в одном сообщении находится где-то около 60. Более точно это не может быть указано, потому что это варьируется от случая к случаю. Это само по себе странно.
echo возвращает изображения в любом случае.
Кажется, что вспомогательные функции работают правильно.
Я подозреваю, что php .ini или apache проблема?
function my_post_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',
'size' => 'thumbnail',
'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=\"wrapper-gallery\">\n";
foreach ($attachments as $id => $attachment) {
$img = wp_prepare_attachment_for_js($id);
if ($columns == '3') { $url = $img['sizes']['medium']['url']; };
if ($columns == '2') { $url = $img['sizes']['large']['url']; };
if ($columns == '1') { $url = $img['sizes']['large']['url']; };
$alt = $img['title'];
$posturl = urlencode(get_permalink());
ob_start();
the_subtitle();
$subtitle = ob_get_clean();
$pinalt = get_the_title() . ' - ' . $subtitle;
$altreplace = '$2';
$altneu = $url;
$altneu = preg_replace("/(.*)\/(.+)(-(.*)x(.*))\.jpg/",$altreplace, $altneu);
if ($altneu == $alt){
$alt = $pinalt;
}
$newimageclass = "";
if ($columns == '3') {
if ($i <= 2) {
$newimageclass = "firstrowimage lazyload";
} else {
$newimageclass = "lazyload";
}
$tmp = '<img src="'. $url .'" alt="'. $alt .'" class="'. $newimageclass .'"/>';
$srcset = wr2x_picture_rewrite($tmp);
$addsrc = add_attributes($srcset, $url);
$script = add_data_srcset($addsrc);
$items .= $script;
$columnscount = "threecolumns";
} else if ($columns == '2') {
if ($i <= 1) {
$newimageclass = "firstrowimage lazyload";
} else {
$newimageclass = "lazyload";
}
$tmp = '<img src="'. $url .'" alt="'. $alt .'" class="'. $newimageclass .'"/>';
$srcset = wr2x_picture_rewrite($tmp);
$addsrc = add_attributes($srcset, $url);
$script = add_data_srcset($addsrc);
$items .= $script;
$columnscount = "twocolumns";
} else {
// 1 column
if ($i == 0) {
$newimageclass = "firstrowimage lazyload";
} else {
$newimageclass = "lazyload";
}
$tmp = '<img src="'. $url .'" alt="'. $alt .'" class="'. $newimageclass .'"/>';
$srcset = wr2x_picture_rewrite($tmp);
$addsrc = add_attributes($srcset, $url);
$script = add_data_srcset($addsrc);
$items .= $script;
$columnscount = "onecolumn";
}
$i++;
}
$output .= "<div class=\"{$columnscount}\">{$items}</div></div>\n";
echo $output; //WORKS IN ANY CASE
return $output; //WORKS UP TO ~60 ITEMS
}
add_filter('post_gallery', 'my_post_gallery', 10, 2);
Вспомогательные функции:
function add_data_srcset ($input) {
$match = '/(srcset)/';
$replace = 'data-$1';
$output = preg_replace($match, $replace, $input);
return $output;
}
function add_attributes($srcset, $url){
$match = '/(<img)/';
$replace = '$1 src=data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== ';
$output = preg_replace($match, $replace, $srcset);
return $output;
}