Редактирование вывода стандартной галереи

Я так понимаю, что для редактирования вывода стандартной галереи, нужно в файле functions.php темы отключить шорткод вывода

remove_shortcode('gallery');

взять стандартную функцию

function gallery_shortcode($attr) {
	global $post, $wp_locale;
 
	static $instance = 0;
	$instance++;
 
	// Allow plugins/themes to override the default gallery template.
	$output = apply_filters('post_gallery', '', $attr);
	if ( $output != '' )
		return $output;
 
	// We're trusting author input, so let's at least make sure it looks like a valid orderby statement
	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];
		}
	} elseif ( !empty($exclude) ) {
		$exclude = preg_replace( '/[^0-9,]+/', '', $exclude );
		$attachments = get_children( array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
	} else {
		$attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
	}
 
	if ( empty($attachments) )
		return '';
 
	if ( is_feed() ) {
		$output = "n";
		foreach ( $attachments as $att_id => $attachment )
			$output .= wp_get_attachment_link($att_id, $size, true) . "n";
		return $output;
	}
 
	$itemtag = tag_escape($itemtag);
	$captiontag = tag_escape($captiontag);
	$columns = intval($columns);
	$itemwidth = $columns > 0 ? floor(100/$columns) : 100;
	$float = $wp_locale->text_direction == 'rtl' ? 'right' : 'left'; 
 
	$selector = "gallery-{$instance}";
 
	$output = apply_filters('gallery_style', "
		
			#{$selector} {
				margin: auto;
			}
			#{$selector} .gallery-item {
				float: {$float};
				margin-top: 10px;
				text-align: center;
				width: {$itemwidth}%;			}
			#{$selector} img {
				border: 2px solid #cfcfcf;
			}
			#{$selector} .gallery-caption {
				margin-left: 0;
			}
		
		<!-- see gallery_shortcode() in wp-includes/media.php -->
		<div id='$selector' class='gallery galleryid-{$id}'>");
 
	$i = 0;
	foreach ( $attachments as $id => $attachment ) {
		$link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
 
		$output .= "";
		$output .= "
			
				$link
			";
		if ( $captiontag && trim($attachment->post_excerpt) ) {
			$output .= "
				
				" . wptexturize($attachment->post_excerpt) . "
				";
		}
		$output .= "";
		if ( $columns > 0 && ++$i % $columns == 0 )
			$output .= '<br style="clear: both" />';
	}
 
	$output .= "
			<br style='clear: both' />
		</div>n";
 
	return $output;
} 

и объявить шоткод заново

add_shortcode('gallery', 'new_gallery_shortcode');

не могу понять как это все оформить в каком порядке записать все время приводит к ошибке. Файл functions.php почти пустой в нем зарегистрировано только меню

 'Верхнее меню',  
));
?>

Semen
Оцените автора
Добавить комментарий

  1. Kisamoto

    Вместо этого add_shortcode(‘gallery’, ‘new_gallery_shortcode’);

    напиши так
    add_shortcode(‘new_gallery’, ‘new_gallery_shortcode’);

    правда придется теперь шорткод галереи писать вручную так [new_gallery] dhe

    Ответить