提问者:小点点

在WP中尝试一些新的东西。问题重置WP循环


我在WP工作,基本上我已经建立了一些逻辑,为我博客的每个类别创建一个单独的旋转木马。

对于每个转盘im,显示每个类别的顶部查看帖子。旋转木马中的每个项目都有一个帖子缩略图、作者姓名和作者头像。

我的问题(如果你向下滚动到主屏幕pst“meet the community”的底部),帖子显示了正确的帖子名称和缩略图,但作者姓名和头像有点古怪。书架上的第一篇文章看起来是正确的,但之后每篇文章都显示了错误的作者。我真的不知道怎么处理这件事。我已经把钥匙捣碎一个星期了。有什么想法吗?

<!-- A shelf for each category by most posts and posts by highest view count--> 

<?php
$cat_args = array(
'number' => 5,
'orderby' => 'count',
'post_type' => 'post',
'order' => 'DESC',
'child_of' => 0
 );

$categories =   get_categories($cat_args); 

foreach($categories as $category) { 

echo '<div class="shelf_holder">';
echo '<div class="shelf_title"> <h1><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a></h1><h5 class="view-all"> <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" )) . '" ' . '>  View All</a></h5></div>';

echo '<div class="shelf_prev"><div class="backwards_icon"></div></div>';
echo '<div class="shelf_next"><div class="forward_icon"></div></div>';
echo '<div class="display-posts-listing grid">';
    
$post_args = array(
'numberposts' => 8,
'category' => $category->term_id,
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'order' => 'DESC'
);

$posts = get_posts($post_args);

foreach($posts as $post) {
    ?>
<div class="listing-item">

    <?php
$thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'medium');
list($url, $width, $height, $is_intermediate) = $thumbnail;
?>

    <div class="media-wrapper">
            <?php $post_views = get_post_meta( get_the_ID(), 'post_views_count', true );?>
            <div class="counter"><div class="views_icon"></div><?php echo $post_views; ?></div>
        <div class="save_card"> <?php the_favorites_button($post_id);?></div>
        <div class="media-gradient" style="height:196px;"></div>
        <a href="<?php the_permalink(); ?>"><div class="media" style="height:196px;width:<?php echo $width; ?>px;background-image:url(<?php echo $url; ?>);background-size:cover;overflow: hidden;background-position: center;width: 100%;left:0px;"></div></a>
    </div>
    <div class="tiny_head"><?php echo get_avatar( get_the_author_meta( 'ID' ), 32 );?> </div>
    <div class="card_content">
    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> 
    <div class="entry-meta">

        <?php
global $post;
$author_id=$post->display_name;
?>

        <?php
the_author_meta( 'display_name', $author_id );
?>              

        <?php wp_reset_query(); ?>  

    </div>  
    </div>  

</div> <!-- listing item -->

<?php 
} 

echo '</div class="display-posts-listing grid">';
echo '</div class="shelf_holder">';

} ?>

共1个答案

匿名用户

将foreach替换为以下内容:

foreach($posts as $post) : ?>

<div class="listing-item">
<?php 

$thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'medium'); 
list($url, $width, $height, $is_intermediate) = $thumbnail;
$author_id=$post->post_author;

?>

    <div class="media-wrapper">
            <?php $post_views = get_post_meta( $post->ID, 'post_views_count', true );?>
            <div class="counter"><div class="views_icon"></div><?= $post_views; ?></div>
        <div class="save_card"> <?php the_favorites_button($post_id);?></div>
        <div class="media-gradient" style="height:196px;"></div>
        <a href="<?= get_the_permalink($post); ?>"><div class="media" style="height:196px;width:<?= $width; ?>px;background-image:url(<?= $url; ?>);background-size:cover;overflow: hidden;background-position: center;width: 100%;left:0px;"></div></a>
    </div>
    <div class="tiny_head"><?= get_avatar( get_the_author_meta( 'ID' ), $author_id );?> </div>
    <div class="card_content">
    <h3><a href="<?= get_the_permalink($post); ?>"><?= get_the_title($post); ?></a></h3> 
    <div class="entry-meta">
<?= get_the_author_meta( 'display_name', $author_id ); ?>
    </div>  
    </div>  

</div> <!-- listing item -->

<?php 
endforeach;

您在使用获取\u作者\u meta的方式中出现了一些错误。它需要作者ID,您尝试使用display\u name获取它。您用于化身的是硬编码的。(这将只返回属于ID32的元)。

你的代码中有很多不一致的地方。试着理解正在发生的事情。查找您正在使用的函数以及它们的确切功能。PHP留档和WordPress留档都是优秀的资源。