Ich benutze WordPress Galerie Shortcode [Galerie] Ich frage mich, ob es sowieso zu paginieren sie ohne ein Plugin.
Ich habe Antwort geschrieben, wie Anhänge in einer sekundären Abfrage als Galerie paginiert werden? , die zur Lösung dieses Problems verwendet werden können. Wie @ wpmudev-ari sagte der [gallery] shortcode kann umgeschrieben werden, oder ein neuer shortcode könnte erstellt werden. Ich erkläre unten – B. – wie das gemacht werden kann. Zusätzlich gibt es eine sehr einfache Lösung – A. – für die Paginierung des Shortcodes.
Sie können die Seitennummerierung folgendermaßen erreichen:
numberposts
und offset
Argumente des Shortcodes;
-Tag; wie unten gezeigt.
Code:
[gallery numberposts="9"] [gallery offset="9" numberposts="9"]
Dies paginiert die Galerie nicht, sie paginiert den Post, der die Galerie enthält – oder genauer gesagt, die geteilte Galerie. In einigen Anwendungsfällen reicht dies jedoch möglicherweise aus. Weitere Informationen finden Sie in der Quelle.
Quelle: Quick-Tipp: Paginieren Sie Ihre WordPress-Galerie
Dies setzt voraus, dass Sie so etwas wollen:
|---------------------| | content | | (static) | |---------------------| | gallery | | (paged) | |---------------------| | < < pagelinks >> | |---------------------|
Code:
remove_shortcode('gallery', 'gallery_shortcode'); add_shortcode('gallery', 'wpse89462_get_attachment_gallery_shortcode');
Code:
add_filter( 'post_gallery', 'wpse89462_get_attachment_gallery_shortcode', 10, 2 );
Code:
add_shortcode('wpse89462_paginated_attachment_gallery', 'wpse89462_get_attachment_gallery_shortcode');
Code:
function wpse89462_get_attachment_gallery_shortcode( $output, $attr ) { global $post; 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'] ); } $html5 = current_theme_supports( 'html5', 'gallery' ); extract(shortcode_atts(array( 'posts_per_page' => 1, 'order' => 'ASC', 'orderby' => 'menu_order ID', 'id' => $post ? $post->ID : 0, 'itemtag' => $html5 ? 'figure' : 'dl', 'icontag' => $html5 ? 'div' : 'dt', 'captiontag' => $html5 ? 'figcaption' : 'dd', 'columns' => 3, 'size' => 'thumbnail', 'post__in' => '', 'post__not_in' => '' ), $attr)); if ( ! empty( $post__in ) ) $post__in = explode( ',', $post__in ); if ( ! empty( $post__not_in ) ) $post__not_in = explode( ',', $post__not_in ); $id = intval($id); if ( 'RAND' == $order ) $orderby = 'none'; $output = ''; $selector = "gallery-{$instance}"; $gallery_style = $gallery_div = ''; if ( apply_filters( 'use_default_gallery_style', ! $html5 ) ) { $gallery_style = " "; } $size_class = sanitize_html_class( $size ); $gallery_div = ""; $gallery_nav_div = "'; endif; return $output; } '; $output .= $gallery_nav_div; if ( get_option('permalink_structure') ) { $format = 'gallery/image/%#%'; } else { $format = '&gallery_page=%#%'; } $args = array( 'base' => get_permalink( $post->post_parent ) . '%_%', 'format' => $format, 'current' => $gallery_page, 'total' => $gallery->max_num_pages ); $output .= paginate_links( $args ); wp_reset_postdata(); $output .= '
Code:
add_filter('init', 'wpse89462_attachment_gallery_add_query_var'); function wpse89462_attachment_gallery_add_query_var() { global $wp; $wp->add_query_var('gallery_page'); }
Code:
add_filter('init', 'wpse89462_attachment_gallery_add_rewrite_tag_rule'); function wpse89462_attachment_gallery_add_rewrite_tag_rule() { add_rewrite_tag('%gallery_page%','([^&]+)'); // rewrite rules have to be added according to needs // below two rules are for two specitic cases // /{year}/{month}/{name}/[gallery_page rewrite] add_rewrite_rule('([0-9]{4})/([0-9]{2})/([^/]+)?/gallery/image//?([0-9]{1,})/?$', 'index.php?year=$matches[1]&month=$matches[2]&name=$matches[3]&gallery_page=$matches[4]', 'top'); // /{name}/[gallery_page rewrite] add_rewrite_rule('([^/]+)/gallery/image//?([0-9]{1,})/?$', 'index.php?name=$matches[1]&gallery_page=$matches[2]', 'top'); }