if ( has_shortcode('gallery') ) :
wp_enqueue_script( 'jquery.easing.1.3' );
endif;
For some reason it don’t want to work with a gallery shortcode. Any help please?You do know there is a gallery shortcode in the core right? http://codex.wordpress.org/Gallery_Shortcode
Also how are you calling the shortcode? Is it in the editor or are you using do_shortcode?
remove_shortcode('gallery', 'gallery_shortcode');
add_shortcode('gallery', 'prefix_gallery_shortcode');
function prefix_gallery_shortcode($attr) {
// your function goes here
}
Yes I know you can modify the shortcode, and that’s not the proper way to do it…. You should be using the post_gallery filter to modify the output http://core.trac.wordpress.org/browser/trunk/wp-includes/media.php#L784
Hm, interesting, could you provide some example please? By the way why are you don’t make your themes for sales here on Theme Forest?
<?php
add_filter( 'post_gallery', 'prefix_post_gallery', 10, 1 );
function prefix_post_gallery( $output ) {
global $post, $wp_locale;
static $instance = 0;
$instance++;
// 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 = is_rtl() ? 'right' : 'left';
$selector = "gallery-{$instance}";
$gallery_style = $gallery_div = '';
if ( apply_filters( 'use_default_gallery_style', true ) )
$gallery_style = "
<style type='text/css'>
#{$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;
}
</style>
<!-- see gallery_shortcode() in wp-includes/media.php -->";
$size_class = sanitize_html_class( $size );
$gallery_div = "<div id="$selector" class="gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}">";
$output = apply_filters( 'gallery_style', $gallery_style . "\n\t\t" . $gallery_div );
$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 .= "<{$itemtag} class='gallery-item'>";
$output .= "
<{$icontag} class='gallery-icon'>
$link
</{$icontag}>";
if ( $captiontag && trim($attachment->post_excerpt) ) {
$output .= "
<{$captiontag} class='wp-caption-text gallery-caption'>
" . wptexturize($attachment->post_excerpt) . "
</{$captiontag}>";
}
$output .= "</{$itemtag}>";
if ( $columns > 0 && ++$i % $columns == 0 )
$output .= '<br style="clear: both" />';
}
$output .= "
<br style="clear: both;" />
</div>\n";
return $output;
}
?>
EDIT : you can modify whatever you want, but the reasoning of using WordPresses filters when they have them is so you don’t strip default functionality
Pixelous said
Hm, interesting, could you provide some example please? By the way why are you don’t make your themes for sales here on Theme Forest?
no reason worth mentioning 
add_filter( 'post_gallery', 'prefix_post_gallery', 10, 1 );
function prefix_post_gallery( $output ) {
...
<script>
jQuery(window).load(function(){
// some script
});
});
</script>
}
It is possible to enque it to the header? Seems not coz this http://codex.wordpress.org/Plugin_API/Action_Reference/wp_head should be out of function, right?Pixelous said
Thanks! Just one question, I am using a script at gallery function:add_filter( 'post_gallery', 'prefix_post_gallery', 10, 1 ); function prefix_post_gallery( $output ) { ... <script> jQuery(window).load(function(){ // some script }); }); </script> }It is possible to enque it to the header? Seems not coz this http://codex.wordpress.org/Plugin_API/Action_Reference/wp_head should be out of function, right?
well as thats raw js, you wouldn’t be using wp_enqueue_script as thats specifically for external js although you can add it to the wp_head I don’t recommend it because its jQuery Dependent if someone moves jQuery to the footer or a plugin does it will break your gallery…
if the reason you are using it like that is because you pulling variables with php you want to take a look at wp_localize_script http://pippinsplugins.com/use-wp_localize_script-it-is-awesome/
