• 締切済み

WordPressの任意のカテゴリを記事をトップページへ表示させる方法+α

ちょっと壁にぶつかりまして、質問させて頂きます。 「おすすめ」というカテゴリを作成し、それに属する記事たちを トップページに表示させる、という話なのですが、 <h3 id="h-recommend">おすすめの記事</h3> <?php $posts = get_posts('category_name=recommend'); foreach($posts as $post) : setup_postdata($post); ?> <h4><?php the_title(); ?></h4> <p>記事本文</p> <?php endforeach; ?> と記述しました。試しに、記事を三つばかり 「おすすめ」カテゴリに設定して投稿したら、 <h3>おすすめの記事一覧</h3> <h4>記事その(1)</h4> <p>記事その(1)の本文</p> <h4>記事その(2)</h4> <p>記事その(2)の本文</p> <h4>記事その(3)</h4> <p>記事その(3)の本文</p> という風になり、とりあえずの成功はしました。 この場合、<h4>たちに関しては、記事が0の時は当然何も表示されない のですが、 <h3>だけ表示されている状態が不自然です。 今回、記事を投稿して初めて<h3>も含む記事全てが表示さる ようにしたいと思っています。 但し、この時<h3>は繰り返しをしません。 「おすすめ」カテゴリに記事を投稿して初めて全てが発動する、 と言った感じにしたいです。 どのような記述方法を取ればよろしいでしょうか? どなたかご教授頂ければ、非常に助かります。よろしくお願い致します。

みんなの回答

noname#140925
noname#140925
回答No.1

ループの中でカウント取って、初回のみH3表示するようにすれば良いだけの事では? <?php $posts = get_posts('category_name=recommend'); $cnt = 0; foreach($posts as $post) : setup_postdata($post); $cnt = $cnt + 1; if($cnt == 1){ ?> <h3 id="h-recommend">おすすめの記事</h3> <?php } ?> <h4><?php the_title(); ?></h4> <p>記事本文</p> <?php endforeach; ?>

chang_1978
質問者

お礼

skyfangさん できました!すばやい対応、ありがとうございました! >ループの中でカウント取って、初回のみH3表示するようにすれば良いだけの事では? PHPも知らないまま、カスタマイズをしている 超初心者なので、これしきのことが分からない状態です。 とても恥ずかしく思いますが、これから勉強してモノに して、回答する側に回れるようにします。 skyfangさんありがとうございました!

関連するQ&A

  • WordPress PCとスマホで表示を切り替える

    PCでは記事一覧5件、スマホでは3件表示するようにしたいです。 条件分岐タグを使って、PCとスマートフォンで記事の一覧表示を切り替える方法がうまくいきませんでした。 https://handywebdesign.net/2017/11/wp-is-mobile/ 改造前のコード(問題なく表示できました) <ul> <?php $latest_posts = get_posts( array( 'posts_per_page' => 5, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post ); if( has_post_thumbnail() ) { $post_thumb = get_the_post_thumbnail( '', 'post_thumbnail' ); // アイキャッチがあるときはアイキャッチを表示 } else { $post_thumb = '<img src="' . get_template_directory_uri() . '/img/noimage.gif" width="100" height="100" alt="デフォルト画像" />'; // アイキャッチがないときは《noimage.gif》を表示 } $post_categories = get_the_category(); // カテゴリーを取得 $post_content = wp_trim_words( get_the_content(), 30, '…' ); // 30字分を抜粋 ?> <li <?php post_class(); ?>> <a href="<?php the_permalink(); ?>"> <div class="blogListimg"> <?php echo wp_kses_post( $post_thumb ); ?> </div> <!-- アイキャッチここまで --> <p class="post-time blogDt"><?php the_time('Y.m.d'); ?></p> <p class="post-categories blogCt"><?php echo esc_html( $post_categories[0]->name ); ?></p> <h3 class="post-title"><?php the_title(); ?></h3> <p class="post-content blogBf"><?php echo esc_html( $post_content ); ?></p> </a> </li> <?php endforeach; wp_reset_postdata(); ?> </ul> PCとスマートフォンで記事の一覧表示を切り替えるコード 参考サイトを参考にfunctions.phpにfunction is_mobile() コードを追加。 トップページのphpに以下を改造。 <?php if ( is_mobile() ) : ?> <?php $latest_posts = get_posts( array( 'posts_per_page' => 5, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post );  ・  ・  ・ <?php else: ?> <?php $latest_posts = get_posts( array( 'posts_per_page' => 3, // 表示する記事の数 'category_name' => '投稿ID',// 投稿IDを取得 'fields' => 'ids', ) ); foreach( $latest_posts as $post ): setup_postdata( $post );  ・  ・  ・ <?php endforeach; wp_reset_postdata(); ?> </ul> 結果は真っ白になってしまいました。 HTMLソースも真っ白です。 空白はSublime Textのテキストエディターを使っていますので、確認しております。 どこが違うか、教えてくださいますか? よろしくおねがいします。

    • ベストアンサー
    • PHP
  • WordPressで一覧表示で5件しか表示されない

    WordPressのトップページに一つのカテゴリーの投稿を一覧表示させたいのですが、 ループで回しても最大5件しか表示されません。 ソースは以下の通りです。 <?php $games = get_posts('category_name=1stleg'); foreach( $games as $post ): setup_postdata($post); the_content(); endforeach; ?> 1stlegというカテゴリーの投稿を全て表示させたいのですが、 5件しか表示されません。 ちなみに1stlegカテゴリーには現在10件程の投稿があります。 素人な質問で申し訳ありませんが、ご教授お願いします。

    • 締切済み
    • PHP
  • Wordpressで記事がない場合にメッセージ表示

    現在Wordpressで特定のカテゴリを一覧表示させる設定を行っています。 ただ、記事が一件もない場合に、その旨を伝えるメッセージを表示させたいのと全てを非表示にさせたいと思っているのですが上手くいきません。(メッセージを表示とコンテンツ全体非表示の2つの方法をお伺いしたいです) 以下、実際のソースになるのですが、該当するカテゴリに記事が0件の場合 「○○に関する記事は現在ありません。」 と表示させるにはどうしたらよいでしょうか? <h2 class="entry-title">カテゴリ1の投稿一覧</h2> <div class="container"> <?php $postslist = get_posts('numberposts=-1&orderby=post_date&order=DESC&cat=1'); foreach ($postslist as $post) : setup_postdata($post); ?> <ul class="hogehoge"> <a href="<?php the_permalink(); ?>" ><img src="<?php echo catch_that_image(); ?>" /></a> <li><a href="<?php the_permalink();?>"><b><?php the_title(); ?></b></a><br /> <a href="<?php the_permalink();?>"><?php echo mb_substr(get_the_excerpt(),0, 80);?>…</a> </li> </ul> <?php endforeach; ?> </div><!-- /container --> 2つ目の質問となりますが、投稿が0の場合にメッセージの表示ではなく、 <h2 class="entry-title">カテゴリ1の投稿一覧</h2> から、 </div><!-- /container --> まで、全てのレイアウトを含めた表示を非表示にするにはどのような定義を行えばよいでしょうか? 試行錯誤試してみたのですが、本件2つの方法が解決できませんでした。 お詳しい方いらっしゃいましたらアドバイスのほどお願いいたします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • WordPressのカテゴリページにhtmlで表示

    WordPress初心者です。 ついに行き詰まってしまったので質問させていただきます。 カテゴリーページについて、あるカテゴリーで投稿したブログ記事がそのカテゴリーページに表示される訳ですが、現状<h2>タグでくくられたタイトルをクリックすると記事の詳細ページに飛びます。 カテゴリーページに記事の本文は<p>タグでくくられて、テキストが流れている状態です。 そうではなくて、カテゴリーページで簡潔させたいのです。 記事の本文に<table>などのhtmlタグを入力しているのに、カテゴリーページに表示されている記事の本文を見ると、<table>などのhtmlタグはまったくなくなっていて、すべて<p>でくくられてしまっています。 記事の本文に入れているhtmlソースをそのままカテゴリーページに表示させることはできないのでしょうか? 方法があれば、それについて記載されているURLなど教えていただけると幸いです! よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 【WordPress】投稿がないカテゴリ非表示方法

    【WordPress】 投稿がないカテゴリー 非表示 方法 カテゴリーの1つを決め すべての子カテゴリーと投稿を表示させる際に、 子カテゴリー内に投稿がない場合、 子カテゴリー名を表示させないようにしたいです。 下記のソースでうまくいきませんでした。 <?php $chihirdren=get_categories( 'parent=5&hide_empty=0&orderby=slug&order=DESC'); foreach($chihirdren as $child){ ?> <?php if(have_posts()):?> <h2><?php echo $child->cat_name ?></h2> <?php else: // no post ?> <?php endif; ?> <?php $wp_query->query(array('cat'=>$child->cat_ID,'posts_per_page'=>-1)); while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <h3><?php the_title(); ?></h3> <?php endwhile; } ?> 大変申し訳ございません。 ご教授をお願いいたします。。

    • ベストアンサー
    • PHP
  • WP トップページに投函した画像を表示

    トップページに最新記事を並びます。 下記のプログラムはタイトルと記事の抜粋のみです。 記事内にある画像を表示するにはどうすれば良いでしょうか? アイキャッチ画像とは別にしたいです。 宜しくお願いします。 <?php $cat = 'info'; //スラッグ $num = '5'; //記事表示数 global $post; $term_id = get_category_by_slug($cat)->term_id; $myposts = get_posts('numberposts=' .$num. '&category_name=' .$cat); if ($myposts) { echo '<ul>'; foreach($myposts as $post): setup_postdata($post); echo '<li><a href=' .get_permalink(). '>'; echo '</a>'; echo '<h4><a href='.get_permalink().'>'. the_title("","",false).'</a></h4>'; echo '<p>' .mb_substr( strip_tags( $post -> post_content ), 0, 30 ). '...</p></li>'; endforeach; echo '</ul>'; } ?>

    • ベストアンサー
    • PHP
  • wordpressで特定の記事の本文だけを取り出す記述

    wordpressで特定の記事の本文だけを取り出す記述 超初心者です。 下記のようなwordpressの関数を使ったPHP文で「特定の記事の本文」のみを取り出したく いろんなwordpressのサンプルなどを参考にして作ってみました。 結果はまあ思い通りには出るのですが、 これって1つの記事を取り出すだけならスマートじゃないですよね・・・。 <?php query_posts('p=277'); ?> <?php if(have_posts()):while(have_posts()):the_post(); ?> <div><?php the_content(); ?></div> <?php endwhile;endif; ?> いまいちwhileなどのループなどがわかってないのですが、 よく考えれば1つの記事を抜き出すのにループを記述する必要があるのか? いろいろ試してみたのですが、エラーが頻出して挫折。 どうすればいいのかがわかんなくて質問させていただきました。 熟練された方はどういう記述にするのか参考にさせていただきたいです。

    • ベストアンサー
    • PHP
  • wordpressの投稿記事のリストを表示したい

    固定ページにすべての投稿記事の投稿日とタイトルだけを表示したかったのですが,タイトルリストの下に記事の内容までもが表示されてしまっています。 http://zen73.net/zwp/ <固定ページに書いた記事>blog ------------------------------------------------------------ <h3>全ブログ一覧</h3> <div class="dl_list"> <?php query_posts('showposts=10'); ?> <?php if (have_posts()):while(have_posts()):the_post(); ?> <dl><dt><?php the_time('Y.n.j'); ?></dt> <dd><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title_attribute(); ?></a></dd></dl> <?php endwhile; endif; ?> </div></div> ------------------------------------------------ PHPは全くの素人なのですが ア 日付とタイトルだけを表示する方法をお教え願います。 イ 'showposts=10'ですと,10件だけの表示になるのではないかと思いますが,すべてを表示したいときの記述の仕方をお教え願います。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • [wordpress] 固定ページで、カテゴリ名の

    [wordpress] 固定ページで、記事の一覧を表示し、その記事の属するカテゴリ名の表示 wordpressで、商品一覧ページを作成していて、一覧を表示するページは固定ページにしています。 その商品一覧の中で、記事(商品)の属するカテゴリ名を表示させたいのですが どうすればいいでしょうか? 商品が服なので、その商品が属するカテゴリを項目の一つとして出力したいのです。 つまり『抽出した商品毎(have_post()の出力結果)にカテゴリ名を抽出』という感じです。 具体的なソースも教えて頂けると助かります。 <?php the_category(); ?> はダメでした。 [参考ソース] <div id="collectionWrap" class="clearfix"> <?php $loop = new WP_Query( array( 'post_type' => 'collection', 'posts_per_page' => 8 ) ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <div class="collection"> <div class="image"> <a href="<?php the_permalink() ?>"><?php echo wp_get_attachment_image(get_post_meta($post->ID,"画像",true),'medium' ); ?></a> </div> <div class="txt"> <div class="clearfix mb10"> <p class="upDate"><?php echo get_post_meta($post->ID,"性別",true); ?></p> <p class="seasons"> <span> /*ここにカテゴリの種類を出力 */ </span></p> </div> <p class="itemName"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></p> <p class="itemPrice">&yen;&nbsp;<?php echo get_post_meta($post->ID,"価格",true); ?></p> </div> </div> <?php endwhile; ?> <?php wp_reset_query(); ?> </div> どうかよろしく御願いします。足りない情報等あればおっしゃってください。 自分でもいろいろ調べてるのですが、わかりません。。急いでます。

    • ベストアンサー
    • PHP
  • Wordpressのタグを使ったPHPで著作権表示

    Wordpress でオリジナルテーマを作っています。 footer.php に著作権の年度表示をしようと思い、以下のように記述しました。 <?php $oldest = get_posts( 'numberposts=1&orderby=post_date&order=ASC' ); ?> <?php foreach( $oldest as $post ) : setup_postdata( $post ); endforeach; ?> <?php $oldest = the_date( 'Y' ); $latest = date( 'Y' ); ?> <?php if ( $oldest == $latest ) : echo $latest; else : echo $oldest.'-'.$latest; endif; ?> 最古記事の年を取得し、「最古記事年-最新記事年」というふうに出力します。 最古記事の年が最新記事の年と同じなら最新記事の年のみを出力、というようにしたかったのですが、 2008年や2009年の記事がある場合はちゃんと「2008-2010」と表示されるのですが、2010年の記事しかなかった場合「2010」とのみ表示されるはずが「2010-2010」となってしまいます。 どうか皆さんの知恵をお貸しください。よろしくお願いいたします。

    • ベストアンサー
    • PHP