この実装、面倒なら代行します
たとえば「不動産サイトで、○○線の全駅を一覧表示にしておいて、駅名をクリックしたらその駅の物件を出すようなことをしたい。ただ、ある駅には物件がまだない。でも体裁上、物件がない駅もグレーアウトとかして表示だけはさせておきたい」
はたまた、たとえば「ゲーム紹介サイトで、キャラクターの一覧表示をして、キャラクター名をクリックしたらそのキャラクターの詳細を出したい。まだ登場していないけどこれから登場するキャラクターがすでに決まっていて、そのキャラクターもキャラクター名だけでもユーザーに知らしめたいので、一覧には出しておきたい」
こういったケースありますよね。
不動産サイトを例に挙げてWordPressで実装してみましょう。
小技チックなことをします。
① 全駅分の記事を登録します。ただし、物件がない駅は「非表示」設定で登録します。
② そのうえで、駅一覧を出力するarchive.phpに次のように記述します。
$the_query = new WP_Query(array( 'post_status' => 'any', 'post_type' => 'post', 'category_name' => 'station', //カテゴリスラッグ 'posts_per_page' => -1, )); if ($the_query->have_posts()) { $html = '<ul>'; while ($the_query->have_posts()) { $the_query->the_post(); $status = get_post_status($post->ID); $post_title = str_replace('非公開: ', '', get_the_title()); if ($status != 'publish') { //非公開記事はタイトルだけ、リンク無し $html .= '<li>' . $post_title . '</li>'; } else { //公開記事はタイトルリンクからリンク $html .= '<li><a href="' . get_the_permalink() . '">' . $post_title . '</a></li>'; } } $html .= '</ul>'; } wp_reset_query();
ポイントは2行目と14行目です。
2行目で
'post_status' => 'any',
とすることで記事が公開だろうが非公開だろうが取得します。
14行目では、
$post_title = str_replace('非公開: ', '', get_the_title());
として、非公開記事のタイトルに自動でついてしまう「非公開: 」という文字列を削除します。
いかがでしょう。
小技ですが、WordPressの記事の公開/非公開のステータス機能を利用した、
「タイトルだけはあるけどまだ中身の存在しない、見られたくない記事も含めて記事一覧を出す」方法です。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。