Hallo,
mein custom Wordpress Gallery via post_gallery Hook ist nach dem Update von PHP5.x auf 7.3 broken. Das hat mich grundsätzlich wenig gewundert. Das Fehlerbild ist jedoch bizarr:
echo gibt in jedem Fall die gesamte Galerie brav aus wohingegen return nur etwas liefert, wenn es maximal "um die" 60 Bilder im gesamten Post gibt. Genauer kann ich das leider nicht spezifizieren, weil es sich von Post zu Post unterscheidet (Bildgröße?).
Habt ihr eine Idee (php.ini, apache.conf Restriktionen)? Merci!
und hier die beiden Helper Funktionen:
mein custom Wordpress Gallery via post_gallery Hook ist nach dem Update von PHP5.x auf 7.3 broken. Das hat mich grundsätzlich wenig gewundert. Das Fehlerbild ist jedoch bizarr:
echo gibt in jedem Fall die gesamte Galerie brav aus wohingegen return nur etwas liefert, wenn es maximal "um die" 60 Bilder im gesamten Post gibt. Genauer kann ich das leider nicht spezifizieren, weil es sich von Post zu Post unterscheidet (Bildgröße?).
Habt ihr eine Idee (php.ini, apache.conf Restriktionen)? Merci!
PHP-Code:
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 {
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 ONLY WITH <~60 IMAGES
}
add_filter('post_gallery', 'my_post_gallery', 10, 2);
PHP-Code:
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;
}
Kommentar