默认的wordpress画廊分页

时间:2014-04-15 20:05:59

标签: wordpress pagination gallery default

我正在寻找一个插件,通过分页将包含80张照片的默认WordPress 3.8.3库分成4页20张照片。我现在在网上看了2天,但却找不到任何东西......任何人都知道插件?

由于

1 个答案:

答案 0 :(得分:4)

我不确定你是否应该解决这个问题。我确实有一个解决方案。

以下是我的所作所为: 首先在wordpress后端的特定页面上创建了库。然后在我的functions.php文件中添加了以下代码:

add_filter('post_gallery', 'filter_gallery', 10, 2);
function filter_gallery($output, $attr) 
{
    global $post;



    //GALLERY SETUP STARTS HERE----------------------------------------//
    if (isset($attr['orderby'])) {
        $attr['orderby'] = sanitize_sql_orderby($attr['orderby']);
        if (!$attr['orderby'])
            unset($attr['orderby']);
    }
    //print_r($attr);
    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];
        }
    }
    if (empty($attachments)) return '';
    //GALLERY SETUP END HERE------------------------------------------//





    //PAGINATION SETUP START HERE-------------------------------------//
    $current = (get_query_var('paged')) ? get_query_var( 'paged' ) : 1;
    $per_page = 24;
    //$offset = ($page-1) * $per_page;
    $offset = ($current-1) * $per_page;
    $big = 999999999; // need an unlikely integer


    $total = sizeof($attachments);
    $total_pages = round($total/$per_page);
    if($total_pages < ($total/$per_page))
    {   $total_pages = $total_pages+1;
    }
    //PAGINATION SETUP END HERE-------------------------------------//














    //GALLERY OUTPUT START HERE---------------------------------------//
    $output = "<div class=\"gallery-images\">\n";
    $counter = 0;
    $pos = 0;
    foreach ($attachments as $id => $attachment) 
    {   $pos++;
        //$img = wp_get_attachment_image_src($id, 'medium');
        //$img = wp_get_attachment_image_src($id, 'thumbnail');
        //$img = wp_get_attachment_image_src($id, 'full');  

        if(($counter < $per_page)&&($pos > $offset))
        {   $counter++;
            $largetitle = get_the_title($attachment->ID);
            $largeimg = wp_get_attachment_image_src($id, 'large');  
            $img = wp_get_attachment_image_src($id, array(100,100));        
            $output .= " <a href=\"{$largeimg[0]}\" data-lightbox=\"example-set\" title=\"{$largetitle}\"><img src=\"{$img[0]}\" width=\"{$img[1]}\" height=\"{$img[2]}\" alt=\"\" /></a>\n";
        }

    }  
    $output .= "<div class=\"clear\"></div>\n";
    $output .= "</div>\n";
    //GALLERY OUTPUT ENDS HERE---------------------------------------//






    //PAGINATION OUTPUT START HERE-------------------------------------//
    $output .= paginate_links( array(
        'base' => str_replace($big,'%#%',esc_url(get_pagenum_link($big))),
        'format' => '?paged=%#%',
        'current' => $current,
        'total' => $total_pages,
        'prev_text'    => __('&laquo;'),
        'next_text'    => __('&raquo;')
    ) );
    //PAGINATION OUTPUT ENDS HERE-------------------------------------//





    return $output;
}

希望这有帮助