这是我使用ACF Gallery字段类型创建图库的方式。我成功显示了所有图像,但我只想每页显示4张图像。我知道如何对帖子类型进行分页,但我不知道如何对ACF库进行分页。谢谢!
public function store(Request $request, $postId) {
$post = Post::findOrFail($postId);
$post->addComment(
new Comment($request->all())
);
return back()->with('success', 'done!');
}
答案 0 :(得分:1)
Working Secondary code Use this one
带有类别的ACF分页图库
查看此内容并管理您的代码。
<?php /*
Template Name: Gallery
Gallery template based on Advanced Custom Fields gallery field
with pagination and categories.
ACF Fields for this page are:
- gallery (Gallery field) -> contain all images
- categories (Repeater field) -> images divided into categories
-- name
-- nice_name (for the url)
-- gallery
*/
get_header();
//Get current cat, if empty show all images
$current_cat = get_query_var('category_name');
if (have_posts()) {
while (have_posts()) {
the_post();
echo '<div class="gallery-wrapper">';
//Get categories
$cats = get_field('categories');
//if this is gallery category subpage find out which one
if ($current_cat) {
foreach ($cats as $k=>$c) {
if ($c['nice_name']==$current_cat) {
$current_gallery = $c['gallery'];
}
}
}else {
//otherwise show whole gallery
$current_gallery = get_field('gallery');
}
//Setup pagination variables
$images = array(); // Set images array for current page
$items_per_page = 4; // How many items we should display on each page
$total_items = count($current_gallery); // How many items we have in total
$total_pages = ceil($total_items / $items_per_page); // How many pages we have in total
//Get current page
if ( get_query_var( 'paged' ) ) {
$current_page = get_query_var( 'paged' );
}elseif ( get_query_var( 'page' ) ) {
$current_page = get_query_var( 'page' );
}else {
$current_page = 1;
}
$starting_point = (($current_page-1)*$items_per_page); // Get starting point for current page
// Get elements for current page
if ($current_gallery) {
$images = array_slice($current_gallery, $starting_point, $items_per_page);
}
//Show category list
if ($cats) {
echo '<ul>';
echo '<li><a href="'.get_permalink().'">All</a></li>';
foreach ($cats as $c) {
echo '<li><a href="'.get_permalink().$c['nice_name'].'/">'.$c['name'].'</a></li>';
}
echo '</ul>';
}
echo '<div id="gallery-items">';
$i = $starting_point;
if ($images) {
foreach ($images as $g) {
echo '<img src="'.$g['sizes']['thumb'].'" alt="'.$g['alt'].'">';
}
}
echo '</div>';
$big = 999999999; // need an unlikely integer
$translated = __( 'Page', 'pixplus' ); // Supply translatable string
$pagination = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => $current_page,
'total' => $total_pages,
'before_page_number' => '<span class="screen-reader-text">'.$translated.' </span>'
));
if ($pagination) echo '<div class="pagination-wrapper">'.$pagination.'</div>';
echo '</div>';
}
}
get_footer();
Function.php(gallery_rewrites)
add_action( 'init', 'gallery_cat_rewrite' );
function gallery_cat_rewrite() {
//My subpage slug is "gallery" if you have something else, change gallery to that
add_rewrite_rule(
'gallery/([^/]+)/?$',
'index.php?pagename=gallery&category_name=$matches[1]',
'top' );
add_rewrite_rule(
'gallery/([^/]+)/page/([0-9]+)?$',
'index.php?pagename=gallery&category_name=$matches[1]&paged=$matches[2]',
'top' );
// Remember to flush the rules once after modyfing something here.
// After first page refresh comment this line so that rule wouldn't be flushed over and over again.
flush_rewrite_rules();
}
答案 1 :(得分:1)
感谢您提供示例代码和示例链接。我终于做到了。这是代码。
<?php
$gallery = get_field('field_59f2a1869ef2b');
$images = array();
$items_per_page = 4;
$total_items = count($gallery);
$size = 'full';
$total_pages = ceil($total_items / $items_per_page);
if(get_query_var('paged')){
$current_page = get_query_var('paged');
}
elseif (get_query_var('page')) {
$current_page = get_query_var('page');
}
else{
$current_page = 1;
}
$starting_point = (($current_page-1)*$items_per_page);
if($gallery){
$images = array_slice($gallery,$starting_point,$items_per_page);
}
if(!empty($images)){
foreach( $images as $image ):
echo wp_get_attachment_image( $image['ID'], $size );
endforeach;
}
$big = 999999999;
echo paginate_links(array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => $current_page,
'total' => $total_pages,
'before_page_number' => '<span class="screen-reader-text">'.$translated.' </span>'
));
?>
答案 2 :(得分:-1)
您可以尝试使用此代码进行图库分页。
<?php $paged = (get_query_var('page')) ? get_query_var('page') : 1;
$MyContent = " " ;//variable for <!--nextpage-->
$count =1; ?>
然后循环
<?php while(has_sub_field("content")): ?>
<?php if(get_row_layout() == "break"): ?>
<?php $MyContent .= "<!--nextpage-->\n";
$count++; ?>
<?php endif; ?>
<?php if(get_row_layout() == "section_content"): ?>
<?php if ($count != $paged){
continue; //ignore the current loop’s layout.
}?>
//your content
<?php endif; ?>
<?php endwhile; ?>
///after the loop put pagination
<?php global $post;
$post->post_content = $MyContent;
setup_postdata($post);
wp_link_pages();
?>