在循环中每隔n个分发图库图像

时间:2019-11-08 作者:nahum

我已经为存档条款添加了一个acf图像库,我想拍摄这些图像,并在术语存档中每3篇文章插入一幅来自该库的图像。这是我到目前为止所拥有的,但我还没有让他们按顺序每3篇帖子分发一次。

1-2-3帖子
图片1
4-5-6帖子
图片2
7-8-9帖子
图片3

// get the current taxonomy term
$queried_object = get_queried_object(); 
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id; 
$images = get_field(\'term_gallery\', $taxonomy .\'_\' . $term_id); //image ids
$size = \'full\'; // (thumbnail, medium, large, full or custom size)

$counter = 1;

if ( have_posts() ) : 
while ( have_posts() ) : the_post(); 

get_template_part( \'template-parts/content\', get_post_type() );
?>

<?php /*//////////////////INSERT IMAGE///////////*/?>
<?php  if($counter % 3 == 0): ?>
<?php if( $images ): ?>

    <?php foreach( $images as $image_id ): ?>



          <div class="image-<?php echo $counter;?>">
            <?php echo wp_get_attachment_image( $image_id, $size ); ?>
          </div>



    <?php endforeach; ?>

<?php endif;?>
<?php endif;?>
<?php /*/////////////////INSERT IMAGE///////////*/?>

<?php

$counter++;

endwhile; 

endif; 
在上面,整个图库每3个帖子显示一次。如中所示

1-2-3个帖子
图像1+图像2+图像3
4-5-6个帖子
图像1+图像2+图像3

UPDATE 我不知道我是怎么得到这个的,但它在一定程度上起作用了,只是在第一页之后分页不起作用?下一页上根本没有显示任何图像,而我本想获得画廊的下3张图像。

// get the current taxonomy term
$queried_object = get_queried_object(); 
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id; 

$images = get_field(\'term_gallery\', $taxonomy .\'_\' . $term_id);
$size = \'full\'; // (thumbnail, medium, large, full or custom size)
$images_len = count($images); // max

$counter = 1;
$img_ct = 0;

if ( have_posts() ) : 
while ( have_posts() ) : the_post(); 

get_template_part( \'template-parts/content\', get_post_type() );

?>
<?php /*//////////////////INSERT IMAGE///////////*/?>
<?php if( $images ): ?>

  <?php  if($counter % 3 == 0): ?>

         <?php if($img_ct == $images_len ) $img_ct = 0;?>

         <div class="image-<?php echo $img_ct;?>">

        <?php echo wp_get_attachment_image( $images[$img_ct], $size ); ?>

        </div>

        <?php $img_ct++;?>

  <?php endif;?>
<?php endif;?>
<?php /*//////////////////INSERT IMAGE///////////*/?>

<?php

$counter++;

endwhile; 

endif; 

2 个回复
最合适的回答,由SO网友:nahum 整理而成

我得到了类似的解决方案

// get the current taxonomy term
$queried_object = get_queried_object(); 
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id; 

$images = get_field(\'term_gallery\', $taxonomy .\'_\' . $term_id);
$size = \'full\'; // (thumbnail, medium, large, full or custom size)

$limit = 3; //how many gallery images per page

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

$offset = ($paged - 1) * $limit;
$images = array_slice($images, $offset, $limit);

$counter = 1; //post counter
$img_ct = 0; //image counter

if ( have_posts() ) : 
while ( have_posts() ) : the_post(); 

get_template_part( \'template-parts/content\', get_post_type() );

?>

<?php /*//////////////////INSERT IMAGE///////////*/?>

<?php if( ! empty( $images ) ): ?>

<?php  if($counter % 3 == 0): ?>

     <div class="image-<?php echo $img_ct;?>">

    <?php echo wp_get_attachment_image( $images[$img_ct], $size ); ?>

    </div>

    <?php $img_ct++;?>

  <?php endif;?>
<?php endif;?>

<?php /*//////////////////INSERT IMAGE///////////*/?>

<?php

$counter++;

endwhile; 

endif; 

SO网友:Sally CJ

正如我在评论中指出的那样,例如,如果您每页显示9篇文章,这意味着每页将显示3个图库图像,并且您希望第1页显示图像1-3,第2页显示图像4-6,依此类推,那么您应该对图库图像分页:

// the number 3 below is the position where the image is to be added to
$paged = max( 1, get_query_var( \'paged\' ) ); // get the current page number
$per_page = floor( max( 1, get_query_var( \'posts_per_page\' ) ) / 3 );

$counter = 1;
$img_ct = ( $paged - 1 ) * $per_page; // start showing images of this index
这将取代这一部分:

$counter = 1;
$img_ct = 0;
此外,您应该使用if ( ! empty( $images ) ) 而不仅仅是if ( $images ).

相关推荐

Bulk edit for custom taxonomy

要创建如图所示的区域,我应该在下面进行什么样的更改<?php /* Portfolio Custom Post Type */ $args = array( \"label\" => \"Şarkı Sözü\", \"singular_label\" => \"Şarkı Sözü Kategorisi\", \'public\'