WordPress Genesis自定义分类档案显示每个帖子重复3次

时间:2018-03-18 作者:apol

我在《创世纪》中使用了儿童主题。我已经设置了一个自定义帖子类型和一个自定义分类法,并且我正在使用高级自定义字段在CPT的每个页面上放置一个库。在分类法归档页面上,我想以缩略图的形式显示每个库中的单个图像,并链接到帖子。我已经使用自定义分类法的新模板成功地设置了这一点,但如果我将“numberposts”=>-1设置为显示所有帖子,则每个帖子/缩略图会重复八次。如果我将其设置为“numberposts”=>1,则每个帖子/缩略图会重复3次。如何仅显示每篇文章的一个缩略图?

我不确定这是否是wordpress的问题,但我认为这一定与我如何设置自定义循环有关?

<?php
//* Template Name: Press Release; Archive

remove_action (\'genesis_loop\', \'genesis_do_loop\'); // Remove the standard loop 
add_action (\'genesis_after_loop\', \'collection_categories\'); // add custom loop
function collection_categories(){

$terms = get_terms(\'collection_categories\');
foreach($terms as $term) {
$posts = get_posts(array(
        \'post_type\' => \'collections\',
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'collection_categories\',
                \'field\' => \'slug\',
                \'terms\' => $term->slug
            )
        ),
        \'numberposts\' => 1
    ));

foreach($posts as $post) {

//* One image from gallery on archive pages

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

    $images = get_field(\'gallery\'); 
    $image_1 = $images[0];
    $link = get_the_permalink();

?>

<a href="<?php echo $link ?>"><img src="<?php echo $image_1[\'sizes\']    [\'thumbnail\']; ?>" alt="<?php echo $image_1[\'alt\']; ?>" /></a>
<?php

        endwhile;
        endif;
}
}
}
genesis();

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

您正在代码中使用嵌套循环。您应该只使用foreach 循环,并将post ID传递给get_field(). 下面是一个示例:

$terms = get_terms( 
    [ 
        \'taxonomy\' => \'collection_categories\', 
        \'orderby\'  => \'name\', 
        \'order\'    => \'DESC\'
    ] 
);

// Rest of the code  here 

foreach ( $posts as $post ) {

    //* One image from gallery on archive pages
    $images  = get_field( \'gallery\', $post->ID ); 
    $image_1 = $images[0];

    ?>

    <a href="<?php the_permalink( $post->ID ); ?>">
        <img src="<?php echo $image_1[\'sizes\'][\'thumbnail\']; ?>" alt="<?php echo $image_1[\'alt\']; ?>" />
    </a><?php

}

// Don\'t forget to reset the postdata
wp_reset_postdata();

结束

相关推荐

Loop inside query

我有一个数组来存储分类法和查询术语,但我不能使用foreach在tax\\u查询中循环我的数组。我拿到了505内线。 $query = array( \'post_type\' => $post_type, \'posts_per_page\' => -1, ); $query[\'tax_query\'] = array( \'relation\' => \'OR\

WordPress Genesis自定义分类档案显示每个帖子重复3次 - 小码农CODE - 行之有效找到问题解决它

WordPress Genesis自定义分类档案显示每个帖子重复3次

时间:2018-03-18 作者:apol

我在《创世纪》中使用了儿童主题。我已经设置了一个自定义帖子类型和一个自定义分类法,并且我正在使用高级自定义字段在CPT的每个页面上放置一个库。在分类法归档页面上,我想以缩略图的形式显示每个库中的单个图像,并链接到帖子。我已经使用自定义分类法的新模板成功地设置了这一点,但如果我将“numberposts”=>-1设置为显示所有帖子,则每个帖子/缩略图会重复八次。如果我将其设置为“numberposts”=>1,则每个帖子/缩略图会重复3次。如何仅显示每篇文章的一个缩略图?

我不确定这是否是wordpress的问题,但我认为这一定与我如何设置自定义循环有关?

<?php
//* Template Name: Press Release; Archive

remove_action (\'genesis_loop\', \'genesis_do_loop\'); // Remove the standard loop 
add_action (\'genesis_after_loop\', \'collection_categories\'); // add custom loop
function collection_categories(){

$terms = get_terms(\'collection_categories\');
foreach($terms as $term) {
$posts = get_posts(array(
        \'post_type\' => \'collections\',
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'collection_categories\',
                \'field\' => \'slug\',
                \'terms\' => $term->slug
            )
        ),
        \'numberposts\' => 1
    ));

foreach($posts as $post) {

//* One image from gallery on archive pages

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

    $images = get_field(\'gallery\'); 
    $image_1 = $images[0];
    $link = get_the_permalink();

?>

<a href="<?php echo $link ?>"><img src="<?php echo $image_1[\'sizes\']    [\'thumbnail\']; ?>" alt="<?php echo $image_1[\'alt\']; ?>" /></a>
<?php

        endwhile;
        endif;
}
}
}
genesis();

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

您正在代码中使用嵌套循环。您应该只使用foreach 循环,并将post ID传递给get_field(). 下面是一个示例:

$terms = get_terms( 
    [ 
        \'taxonomy\' => \'collection_categories\', 
        \'orderby\'  => \'name\', 
        \'order\'    => \'DESC\'
    ] 
);

// Rest of the code  here 

foreach ( $posts as $post ) {

    //* One image from gallery on archive pages
    $images  = get_field( \'gallery\', $post->ID ); 
    $image_1 = $images[0];

    ?>

    <a href="<?php the_permalink( $post->ID ); ?>">
        <img src="<?php echo $image_1[\'sizes\'][\'thumbnail\']; ?>" alt="<?php echo $image_1[\'alt\']; ?>" />
    </a><?php

}

// Don\'t forget to reset the postdata
wp_reset_postdata();

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp