WP图库功能的帮助,将图库包装在div中

时间:2013-07-25 作者:Josh M

我的函数中有一个函数。php文件我需要稍微修改一下,但在正确执行时遇到了问题。此函数更改Wordpress的图库标记,使其更加html5友好。它工作得很好,只是我想将整个库包装在一个div中,例如<div id="sort">. (我想包装图片库,而不是整个帖子。)

我很难理解如何将其添加到此函数中:

//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 个回复
最合适的回答,由SO网友:Pontus Abrahamsson 整理而成

我刚刚在函数中添加了一个div,请参见代码中的注释:

<?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;
}

结束

相关推荐

Custom gallery in wp3.5

我使用了我在3.4中为一个光滑的小自定义库找到的教程,但升级到3.5后,它就不再工作了。我仍在努力学习php,但似乎无法再次使用它,因为我要么出错,要么什么都没有。无论如何,在升级之前,用户所要做的就是点击“添加媒体”,上传他想在帖子中显示的任何图像[在本例中是产品],设置图像的顺序,第一个图像是顶部/全尺寸图像,然后在文本字段中键入他的描述,当他点击“提交”时,将以上所有内容以良好的格式显示出来,如下所示:single.php xxxxxxxxxxxxxxxxxxxxxxxxxxxxx