
現在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つの方法が解決できませんでした。
お詳しい方いらっしゃいましたらアドバイスのほどお願いいたします。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
そのテンプレート全体がどうなっているか分からないのでget_postsでもいいかも知れないが、代わりにWP_Queryを使うと使い勝手が良くなろう。
<?php $q = new WP_Query(array('cat' => 1, 'posts_per_page' => 1)); ?>
WP_Queryの引数はposts_per_archive_pageあたりを調べても参考になろう。
で、これで$qにはカテゴリIDが1の全投稿が入るわけだが、後は普通に$q->have_posts()で投稿があるかどうかが判定できる。
以上のことから質問のソースを書き換えると
~~~~snippetここから~~~~
<?php $q = new WP_Query(array('cat' => 1, 'posts_per_page' => 1)); ?>
<?php if($q->have_posts()): ?>
<h2 class="entry-title">カテゴリ1の投稿一覧</h2>
<div class="container">
<?php while($q->have_posts()): $q->the_post(); ?>
<ul class="hogehoge">
<li>
<a href="<?php the_permalink(); ?>" ><img src="<?php echo catch_that_image(); ?>" /></a>
</li>
<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 endwhile; ?>
</div><!-- /container -->
<?php else; ?>
○○に関する記事は現在ありまへん。
<?php endif; ?>
~~~~snippetここまで~~~~
上のコードは想像で書いたので実際に動かしてはないのでその辺はあれこれ試してみて欲しい。
まず、WP_Queryで$qの中に投稿を詰め込む。前述の通り$q->have_posts()が投稿有無の判断基準になるので
if($q->have_posts()):
// ある
else:
// ない
endif:
が一番大きなくくりになる。で、「ある」の方は今度はwhileで$q->have_posts()がfalseになるまでくるくるまわす。while開始直後に$q->the_post()を呼ぶ事でそこからendwhileの中までは通常のthe_title()などで$q内の現在の投稿にアクセスする事ができる。「ない」は普通に「ねーよ」というのを書けばいい。
直接は関係ないがHTMLの話。一応1投稿に対して1ulタグにしたかったのかなと思ってサンプルコードはこうしたが、明らかに意図が違う2つのliタグが入っているulタグよりかはdlタグを用いた方が良いのではないかな。それか<div>とかで1投稿に対する見せ方をレイアウトするか。
後、get_the_excerpt()の後ろのてんてんてんって要るかね?
80文字で切るも含めてこのあたりの制御はWP Multibyte Patchに任せたほうがいいような気もする。
この回答への補足
有難う御座います。
その後、頂いたアドバイスとリファレンス的なサイトを渡り歩き、何とか思ったとおりの表示が出来ました。
投稿がない場合は、枠自体も表示されません。希望とおりです。
本当に有難う御座いました。
これから例のHTML部分を綺麗に修正したいと思います。
感謝、感謝です!m(_ _)m
有難う御座います。
お教えいただいた方法で試しておりますが、現状、解決できておりません。
エラーとなり何も表示されません。
色々と試行錯誤して試してみたいと思います。
また、HTML部分でのご指摘も有難う御座います。
問題解決しましたら、もう少し綺麗にソースを整えてみたいと思います。
>>WP Multibyte Patch
有難う御座います、今回このページのこの部分のみが80文字にしたいと考えていましたので、プログラム側で設定してみました。アドバイス有難う御座います。
ちなみに、上記ソースはWPのindex.phpテンプレートで試しているのですが、本来はカテゴリ1が表示されるのでしょうか?真っ白なので悩んでおります…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP PHP MySql ページング 2 2022/09/20 06:38
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【PHP/MySQL】コード上で生成...
-
phpの問い合わせフォームを作っ...
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
BASIC認証のフォームをデザイン...
-
phpでcookieがうまく保存されない
-
アップロードファイルの数に応...
-
PHPで画像の渡しが上手く行きま...
-
PHP MySQLに画像を直接保存
-
php に関して質問です。 各ユー...
-
phpに関わる所での、form actio...
-
$_SESSIONについて教えて下さい。
-
PHP echo バックスラッシュの使...
-
PHPでCSVを出力するさいに、ル...
-
登録、削除、リスト、もう一つ...
-
Content-Typeが機能していない?
-
PHP でメールフォームを作成したい
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WordPressのLighting(テーマ)に...
-
WP/ 記事タイトルをクリックさ...
-
header()関数について
-
DreamweaverとWordPressの連携
-
xreaでのWordpressインストール...
-
PHPのソース変更が反映されない
-
wordpressがログアウト状態だと...
-
Smartyのテンプレートにinclude...
-
php 外部ファイルについて
-
PHPのクッキーによるリダイレクト
-
外部ファイルの読み込み
-
wordpressのファイル構成について
-
URL短縮ツール「楽々URL」をさ...
-
MagpieRSSでRSSを取得し、ラン...
-
Webデザイナー向けLinuxユーザ...
-
変数で日付を指定し、新しい順...
-
phpの間違え箇所について
-
<?php phpinfo(); ?>が出たり出...
-
wordpress投稿内でcgiを動かしたい
-
WordPressでjavascriptのアップ...
おすすめ情報