439 posts
  • Bought between 50 and 99 items
  • Europe
  • Exclusive Author
  • Has been a member for 2-3 years
  • Sold between 5 000 and 10 000 dollars
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?
3192 posts
  • Sold between 5 000 and 10 000 dollars
  • United States
  • Bought between 10 and 49 items
  • Has been a member for 4-5 years
  • Exclusive Author
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?

439 posts
  • Bought between 50 and 99 items
  • Europe
  • Exclusive Author
  • Has been a member for 2-3 years
  • Sold between 5 000 and 10 000 dollars
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
}
3192 posts
  • Sold between 5 000 and 10 000 dollars
  • United States
  • Bought between 10 and 49 items
  • Has been a member for 4-5 years
  • Exclusive Author
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

439 posts
  • Bought between 50 and 99 items
  • Europe
  • Exclusive Author
  • Has been a member for 2-3 years
  • Sold between 5 000 and 10 000 dollars
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?

3192 posts
  • Sold between 5 000 and 10 000 dollars
  • United States
  • Bought between 10 and 49 items
  • Has been a member for 4-5 years
  • Exclusive Author
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

3192 posts
  • Sold between 5 000 and 10 000 dollars
  • United States
  • Bought between 10 and 49 items
  • Has been a member for 4-5 years
  • Exclusive Author
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 ;-)

439 posts
  • Bought between 50 and 99 items
  • Europe
  • Exclusive Author
  • Has been a member for 2-3 years
  • Sold between 5 000 and 10 000 dollars
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?
3192 posts
  • Sold between 5 000 and 10 000 dollars
  • United States
  • Bought between 10 and 49 items
  • Has been a member for 4-5 years
  • Exclusive Author
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/

by
by
by
by
by
by