そのまま引用します。
<?php $first = true; if(have_posts()): ?>
<dl class="newEntry">
<?php while(have_posts()): the_post(); ?>
<?php if($first): $first = false; ?>
<?php if( $attachment_id = get_field('top_banner_img') ): ?>
<?php
$attachment = get_post( $attachment_id );
$size = "full"; // (thumbnail, medium, large, full or custom size)
$image = wp_get_attachment_image_src( $attachment_id, $size );
$alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
$image_title = $attachment->post_title;
?>
<img src="<?php echo $image[0]; ?>" alt="<?php echo $alt; ?>" title="<?php echo $image_title; ?>" width="250" />
<?php else : ?>
<?php the_post_thumbnail(array(250,250)); ?>
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php the_time("Y.n.j") ?>
<p><?php echo mb_substr(get_the_content(), 0, 150).'...'; ?></p>
<?php else: ?>
<dt><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><span><?php the_time("Y.n.j") ?></span></dt>
<dd><?php the_excerpt(); ?></dd>
<?php endif; ?>
<?php endwhile; ?>
</dl>
<?php endif; ?>
while文とはループ文です。ですのでその中には<dt></dt>
と<dd></dd>
だけにすることで希望の動きになります。
追記:
しかしこれだと、定義リストに全て含まれてしまうことになってしまうのでマークアップ上は正しくありません。サブループで1件画像などを含む記事を取得して、その下からoffsetを指定したループで定義リストを生成する等の方法が一番分かりやすいかと思います。
dlをループの外に出すと良いように思います。
<?php $first = true; if(have_posts()): ?>
<dl class="newEntry">
<?php while(have_posts()): the_post();?>
- 省略 -
<?php endwhile; ?>
</dl>
<?php endif; ?>
書込んでいたら、ステキな回答がありました。
これ、忘れて下さい。
先頭と2番目以降を分けただけです。
<?php if(have_posts()): the_post(); ?>
<?php if( $attachment_id = get_field('top_banner_img') ): ?>
<?php
$attachment = get_post( $attachment_id );
$size = "full"; // (thumbnail, medium, large, full or custom size)
$image = wp_get_attachment_image_src( $attachment_id, $size );
$alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
$image_title = $attachment->post_title;
?>
<img src="<?php echo $image[0]; ?>" alt="<?php echo $alt; ?>" title="<?php echo $image_title; ?>" width="250" />
<?php else : ?>
<?php the_post_thumbnail(array(250,250)); ?>
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php the_time("Y.n.j") ?>
<p><?php echo mb_substr(get_the_content(), 0, 150).'...'; ?></p>
<?php endif; ?>
<?php if(have_posts()): ?>
<dl class="newEntry">
<?php while(have_posts()): the_post(); ?>
<dt><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><span><?php the_time("Y.n.j") ?></span></dt>
<dd><?php the_excerpt(); ?></dd>
<?php endwhile; ?>
</dl>
<?php endif; ?>
ページネーションを付けることを考えると、こちらの方がいいかもしれません。
<?php if(have_posts()): ?>
<?php if (get_query_var('paged') == 1) : ?>
<?php the_post(); ?>
<?php if( $attachment_id = get_field('top_banner_img') ): ?>
<?php
$attachment = get_post( $attachment_id );
$size = "full"; // (thumbnail, medium, large, full or custom size)
$image = wp_get_attachment_image_src( $attachment_id, $size );
$alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
$image_title = $attachment->post_title;
?>
<img src="<?php echo $image[0]; ?>" alt="<?php echo $alt; ?>" title="<?php echo $image_title; ?>" width="250" />
<?php else : ?>
<?php the_post_thumbnail(array(250,250)); ?>
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php the_time("Y.n.j") ?>
<p><?php echo mb_substr(get_the_content(), 0, 150).'...'; ?></p>
<?php endif; ?>
<?php if(have_posts()): ?>
<dl class="newEntry">
<?php while(have_posts()): the_post(); ?>
<dt><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><span><?php the_time("Y.n.j") ?></span></dt>
<dd><?php the_excerpt(); ?></dd>
<?php endwhile; ?>
</dl>
<?php endif; ?>
<!-- ページネーション -->
<?php endif; ?>
EisukeAkimotoさま
ご回答ありがとうございます!
サブループで1件画像などを含む記事を取得して、その下からoffsetを指定したループで定義リストを生成する
すみません。勉強不足で理解しきれていないのですが、追ってしっかり習得したいと思います。
taikikenさま
いえ、ご回答いただけて嬉しいです。ありがとうございます!
pluto1234さま
またお世話になります。ご回答ありがとうございます。
できればページネーションをつける形で表示したいと思うのですが、
頂いた後者のコードの場合
get_query_var('paged')
のpagedがタクソノミー名(引数?)になるかと思うのですが、
そのタクソノミーの値を取得する方法が良くわからないので聞いてもよろしいでしょうか?
色々と調べたのですが、現在表示しているページ(taxonomy.php)でのタクソノミー名取得は下記のような感じで良いのでしょうか…?
$term = get_term_by(
'slug',
get_query_var( 'term' ),
get_query_var( 'taxonomy' )
);
上記を
<?php echo $term; ?>
したところCatchable fatal error: Object of class stdClass could not be converted to string in〜と出てしまい、値が取れているのかも不明です。
初歩的な質問ばかりで申し訳ありませんが、ご回答をいただけますと幸いです。
タクソノミー名なら
<?php
$query_obj = get_queried_object();
$taxonomy_obj = get_taxonomy($query_obj->taxonomy);
echo esc_html($taxonomy_obj->label);
?>
ターム名なら
<?php single_term_title(); ?>
もしくは、
<?php
$query_obj = get_queried_object();
echo esc_html($query_obj->name);
?>
修正
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
<?php if(have_posts()): ?>
<?php if ($paged == 1) : ?>
:
pluto1234さま
何度もありがとうございます!
頂いたコードを参考に作ってみたのですが、最新一件のみ表示されません。
使用方法が間違っているのでしょうか…。
<?php
$query_obj = get_queried_object();
$taxonomy_obj = get_taxonomy($query_obj->taxonomy);
$taxonomy_name = ($taxonomy_obj->label);
?>
<?php if(have_posts()): ?>
<?php if (get_query_var($taxonomy_name) == 1) : ?>
<?php the_post(); ?>
<?php if( $attachment_id = get_field('top_banner_img') ): ?>
<?php
$attachment = get_post( $attachment_id );
$size = "full"; // (thumbnail, medium, large, full or custom size)
$image = wp_get_attachment_image_src( $attachment_id, $size );
$alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
$image_title = $attachment->post_title;
?>
<img src="<?php echo $image[0]; ?>" alt="<?php echo $alt; ?>" title="<?php echo $image_title; ?>" width="250" />
<?php else : ?>
<?php the_post_thumbnail(array(250,250)); ?>
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php the_time("Y.n.j") ?>
<p><?php echo mb_substr(get_the_content(), 0, 150).'...'; ?></p>
<?php endif; ?>
<?php if(have_posts()): ?>
<dl class="newEntry">
<?php while(have_posts()): the_post(); ?>
<dt><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><span><?php the_time("Y.n.j") ?></span></dt>
<dd><?php the_excerpt(); ?></dd>
<?php endwhile; ?>
</dl>
<?php endif; ?>
<!-- ページネーション -->
<?php wp_pagenavi(); ?>
<!-- /ページネーション -->
<?php endif; ?>
そこは、さっき修正を追加しておきました。
それにしても
<?php if (get_query_var($taxonomy_name) == 1) : ?>
は、まったくおかしいです。
pluto1234さま
ありがとうございます!
以下にて無事表示することができました。
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php if(have_posts()): ?>
<?php if ($paged == 1) : ?>
<?php the_post(); ?>
<?php if( $attachment_id = get_field('top_banner_img') ): ?>
<?php
$attachment = get_post( $attachment_id );
$size = "full"; // (thumbnail, medium, large, full or custom size)
$image = wp_get_attachment_image_src( $attachment_id, $size );
$alt = get_post_meta($attachment->ID, '_wp_attachment_image_alt', true);
$image_title = $attachment->post_title;
?>
<img src="<?php echo $image[0]; ?>" alt="<?php echo $alt; ?>" title="<?php echo $image_title; ?>" width="250" />
<?php else : ?>
<?php the_post_thumbnail(array(250,250)); ?>
<?php endif; ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php the_time("Y.n.j") ?>
<p><?php echo mb_substr(get_the_content(), 0, 150).'...'; ?></p>
<?php endif; ?>
<?php if(have_posts()): ?>
<dl class="newEntry">
<?php while(have_posts()): the_post(); ?>
<dt><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><span><?php the_time("Y.n.j") ?></span></dt>
<dd><?php the_excerpt(); ?></dd>
<?php endwhile; ?>
</dl>
<?php endif; ?>
<!-- ページネーション -->
<!-- /ページネーション -->
<?php endif; ?>
<?php if (get_query_var($taxonomy_name) == 1) : ?>
は用法としておかしいものだったのですね…。色々と根本的に理解ができていないようなので、この機会に知る事ができてよかったです!
頂いたコードをきちんと理解できるように、色々調べてみたいと思います。
この度も貴重なお時間を割いて頂き、まことにありがとうございました。