438 posts
  • Has been part of the Envato Community for over 2 years
  • Has sold $5,000+ on Envato Market
  • Has collected 50+ items on Envato Market
  • Sells items exclusively on Envato Market
Pixelous says
Hi, everyone! Using this greate function http://wp.tutsplus.com/articles/quick-tip-improving-shortcodes-with-the-has_shortcode-function/ to check if the shortcode is exist. So, it works great but for some reason it don’t work for such line of code:
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?
3437 posts
  • Has sold $5,000+ on Envato Market
  • Has collected 10+ items on Envato Market
  • Located in United States
  • Has been part of the Envato Community for over 4 years
+1 more
organicbee says

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?

438 posts
  • Has been part of the Envato Community for over 2 years
  • Has sold $5,000+ on Envato Market
  • Has collected 50+ items on Envato Market
  • Sells items exclusively on Envato Market
Pixelous says
I am calling the shortcode at the editor. This function has_shortcode() works well with my custom shortcode but for some reason it don’t work with default gallery shortcode, but I think it should. By the way you do know you can modify core shortcode like so:
remove_shortcode('gallery', 'gallery_shortcode');

add_shortcode('gallery', 'prefix_gallery_shortcode');

function prefix_gallery_shortcode($attr) {
// your function goes here
}
3437 posts
  • Has sold $5,000+ on Envato Market
  • Has collected 10+ items on Envato Market
  • Located in United States
  • Has been part of the Envato Community for over 4 years
+1 more
organicbee says

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

438 posts
  • Has been part of the Envato Community for over 2 years
  • Has sold $5,000+ on Envato Market
  • Has collected 50+ items on Envato Market
  • Sells items exclusively on Envato Market
Pixelous says

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?

3437 posts
  • Has sold $5,000+ on Envato Market
  • Has collected 10+ items on Envato Market
  • Located in United States
  • Has been part of the Envato Community for over 4 years
+1 more
organicbee says
<?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

3437 posts
  • Has sold $5,000+ on Envato Market
  • Has collected 10+ items on Envato Market
  • Located in United States
  • Has been part of the Envato Community for over 4 years
+1 more
organicbee says

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 ;-)

438 posts
  • Has been part of the Envato Community for over 2 years
  • Has sold $5,000+ on Envato Market
  • Has collected 50+ items on Envato Market
  • Sells items exclusively on Envato Market
Pixelous says
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?
3437 posts
  • Has sold $5,000+ on Envato Market
  • Has collected 10+ items on Envato Market
  • Located in United States
  • Has been part of the Envato Community for over 4 years
+1 more
organicbee says

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/

Helpful Information

  • Please read our community guidelines. Self promotion and discussion of piracy is not allowed.
  • Open a support ticket if you would like specific help with your account, deposits or purchases.
  • Item Support by authors is optional and may vary. Please see the Support tab on each item page.

Most of all, enjoy your time here. Thank you for being a valued Envato community member.

Post Reply

Format your entry with some basic HTML. Read the Full Details, or here is a refresher:

<strong></strong> to make things bold
<em></em> to emphasize
<ul><li> or <ol><li> to make lists
<h3> or <h4> to make headings
<pre></pre> for code blocks
<code></code> for a few words of code
<a></a> for links
<img> to paste in an image (it'll need to be hosted somewhere else though)
<blockquote></blockquote> to quote somebody

:grin: :shocked: :cry: Complete List of Smiley Codes

by
by
by
by
by
by