web-dev-qa-db-fra.com

Aider à WP fonction gallery, développer la galerie en div

J'ai une fonction dans mon fichier functions.php que j'ai besoin de changer légèrement et j'ai du mal à le faire correctement. Cette fonction modifie le balisage de la galerie pour Wordpress, le rendant ainsi plus convivial avec HTML5. Cela fonctionne bien tel quel, sauf que j'aimerais envelopper toute la galerie dans un div, par exemple <div id="sort">. (Je veux envelopper la galerie, pas le post entier.)

J'ai du mal à comprendre comment ajouter cela à cette fonction:

//Gallery Code Filter
add_filter( 'post_gallery', 'my_post_gallery', 10, 2 );
function my_post_gallery( $output, $attr) {
    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'    => 'figure',
        'icontag'    => 'dt',
        'captiontag' => 'figcaption',
        'columns'    => 3,
        'size'       => 'thumbnail',
        'attachment' => 'large',
        '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}";
    $output = apply_filters('gallery_style', "");
    $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='item'>";
        $output .= "            
                $link
            ";
        if ( $captiontag && trim($attachment->post_excerpt) ) {
            $output .= "
                <{$captiontag}>
                " . wptexturize($attachment->post_excerpt) . "
                </{$captiontag}>";
        }
        $output .= "</{$itemtag}>";
        if ( $columns > 0 && ++$i % $columns == 0 )
            $output .= '';
    }
    $output .= "
            <br>\n";
    return $output;
}
1
Josh M

Je viens d'ajouter un div à votre fonction voir commentaire dans le code:

<?php 

add_filter( 'post_gallery', 'my_post_gallery', 10, 2 );
function my_post_gallery( $output, $attr ) 
{
    global $post, $wp_locale;
    static $instance = 0;

    $instance ++;

    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'    => 'figure',
        'icontag'    => 'dt',
        'captiontag' => 'figcaption',
        'columns'    => 3,
        'size'       => 'thumbnail',
        'attachment' => 'large',
        '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 = '';
        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}";
    $output     = apply_filters( 'gallery_style', '' );
    $i          = 0;

    // The div
    $output .= '<div id="sort">';

        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='item'>";
            $output .= "$link";

            if ( $captiontag && trim( $attachment->post_excerpt ) ) 
            {
                $output .= "<{$captiontag}>" . wptexturize( $attachment->post_excerpt ) . "</{$captiontag}>";
            }
            $output .= "</{$itemtag}>";

            if ( $columns > 0 && ++$i % $columns == 0 )
            {
                $output .= '';
            }
        }

        $output .= "<br>\n";

    // End div
    $output .= '</div>';

    return $output;
}
1
Pontus Abrahamsson