WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

Пагинация галереи

Ищу готовый код пагинации галереи

Чтобы при добавлении 25 картинок, галерея дробилась на 20 и 5 и в адресе получалось что-то типа:

  • site.ru/постдлятеста/ и на нем 20 фото
  • а вторая страница site.ru/постдлятеста/2/ и на ней оставшиеся 5 фото

такая пагинация обязательна, так как сайт уже проиндексирован

Нужно вот так, только по 20

уже у меня был готовый код и проработанный код, но просрал

везде в основном встречаю этот, но он не работает

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

	//GALLERY SETUP STARTS HERE----------------------------------------//
	if (isset($attr['orderby'])) {
		$attr['orderby'] = sanitize_sql_orderby($attr['orderby']);
		if (!$attr['orderby'])
			unset($attr['orderby']);
	}
	//print_r($attr);
	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 '';
	//GALLERY SETUP END HERE------------------------------------------//

	//PAGINATION SETUP START HERE-------------------------------------//
	$current = (get_query_var('paged')) ? get_query_var( 'paged' ) : 1;
	$per_page = 24;
	//$offset = ($page-1) * $per_page;
	$offset = ($current-1) * $per_page;
	$big = 999999999; // need an unlikely integer

	$total = sizeof($attachments);
	$total_pages = round($total/$per_page);
	if($total_pages < ($total/$per_page))
	{   $total_pages = $total_pages+1;
	}
	//PAGINATION SETUP END HERE-------------------------------------//

	//GALLERY OUTPUT START HERE---------------------------------------//
	$output = "<div class=\"gallery-images\">\n";
	$counter = 0;
	$pos = 0;
	foreach ($attachments as $id => $attachment) 
	{   $pos++;
		//$img = wp_get_attachment_image_src($id, 'medium');
		//$img = wp_get_attachment_image_src($id, 'thumbnail');
		//$img = wp_get_attachment_image_src($id, 'full');  

		if(($counter < $per_page)&&($pos > $offset))
		{   $counter++;
			$largetitle = get_the_title($attachment->ID);
			$largeimg = wp_get_attachment_image_src($id, 'large');  
			$img = wp_get_attachment_image_src($id, array(100,100));        
			$output .= " <a href=\"{$largeimg[0]}\" data-lightbox=\"example-set\" title=\"{$largetitle}\"><img src=\"{$img[0]}\" width=\"{$img[1]}\" height=\"{$img[2]}\" alt=\"\" /></a>\n";
		}

	}  
	$output .= "<div class=\"clear\"></div>\n";
	$output .= "</div>\n";
	//GALLERY OUTPUT ENDS HERE---------------------------------------//

	//PAGINATION OUTPUT START HERE-------------------------------------//
	$output .= paginate_links( array(
		'base' => str_replace($big,'%#%',esc_url(get_pagenum_link($big))),
		'format' => '?paged=%#%',
		'current' => $current,
		'total' => $total_pages,
		'prev_text'    => __('«'),
		'next_text'    => __('»')
	) );
	//PAGINATION OUTPUT ENDS HERE-------------------------------------//

	return $output;
}
kolshix 8 месяцев назад

Короче нигде ничего путевого и пришлось собрать код самому

0
kolshix101 8 месяцев назад

Нет ответов на этот вопрос.

На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.