1

最近のブログ投稿を css グリッドで表示するこの php コードからショートコードを作成したいと考えています。各ブログの画像やその他のメタデータを表示しています。

<div class="wrapper">
    <?php $q = new WP_Query( 'posts_per_page=3' ); ?>

    <div class="recent-blogs">
      <?php while ( $q->have_posts() ) : $q->the_post(); ?>

        <div class="blog-item">
          <h3 class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

          <?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' ); ?>    
          <img class="image" src="<?php echo $url ?>" />

          <div class="avatar"><?php echo get_avatar( get_the_author_meta('ID'), 40); ?></div>
          <div class="author"><?php the_author_posts_link(); ?></div>
          <div class="time"><?php the_time('m.d.y'); ?></div>
          <div class="category"><?php the_category(); ?></div>
          <div class="comments"><?php comments_number(); ?></div>
          <?php the_excerpt(); ?>
        </div>

      <?php endwhile; ?>
      <?php wp_reset_postdata(); ?>

    </div>    
</div>

基本的に、すべてのコンテンツの後にテンプレートが page.php に表示されるようになりました。ページビルダーをより細かく制御して、必要な場所に配置できるようにしたいと考えています。私のphpスキルは悪く、htmlを単一の文字列に連結しようとしましたが、ループとこれらすべてのphp変数のためにいつも失敗します。また、ob_start()、ob_get_clean()、および ob_get_contents() を使用してみましたが、何らかの理由で無限ループになってしまいます。

function recent_blogs_grid() {}
add_shortcode('recent_blogs_grid', 'recent_blogs_grid');
4

1 に答える 1