質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

1回答

759閲覧

wordpress index.phpでカスタム投稿タイプの表示にタグで条件分岐を行いたい。

ko-nare

総合スコア6

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

0クリップ

投稿2020/04/23 02:02

wordpressでWEBページを制作しています。

TOPページ「index.php」でカスタム投稿タイプで4件表示しているのですが、
つけてるタグで、書き出すhtmlを変更する条件分岐を行いたいのですが、どうも出来ません。。。
やり方をご教授いただければと思います。

以下私のほうで設定している内容です。

カスタム投稿名・・works

#####■function.php カスタム投稿の設定

php

1 2function create_post_type_works() { 3 $Supports = [ 4 'title', 5 'editor', 6 'custom-fields', 7 'thumbnail', 8 ]; 9 register_post_type( 'works', 10 array( 11 'label' => 'WORKS', 12 'labels' => array( 13 'all_items' => 'ワークス一覧' 14 ), 15 'public' => true, 16 'has_archive' => true, 17 'menu_position' => 5, 18 'supports' => $Supports 19 ) 20 ); 21 22 //カテゴリタイプの設定(カスタムタクソノミーの設定) 23 register_taxonomy( 24 'workscat', //カテゴリー名(任意) 25 'works', //カスタム投稿名 26 array( 27 'hierarchical' => true, //カテゴリータイプの指定 28 'update_count_callback' => '_update_post_term_count', 29 //ダッシュボードに表示させる名前 30 'label' => 'カテゴリー', 31 'public' => true, 32 'show_ui' => true 33 ) 34 ); 35 36 //タグタイプの設定(カスタムタクソノミーの設定) 37 register_taxonomy( 38 'workstag', //タグ名(任意) 39 'works', //カスタム投稿名 40 array( 41 'hierarchical' => false, //タグタイプの指定(階層をもたない) 42 'update_count_callback' => '_update_post_term_count', 43 //ダッシュボードに表示させる名前 44 'label' => 'タグ', 45 'public' => true, 46 'show_ui' => true 47 ) 48 ); 49} 50add_action( 'init', 'create_post_type_works' ); 51

#####■index.php ループの設定

PHP

1<ul class="event_list col4"> 2<?php $args = array( 3 'numberposts' => 4, 4 'post_type' => 'works' 5 6 ); 7 $customPosts = get_posts($args); 8 if($customPosts) : foreach($customPosts as $post) : setup_postdata( $post ); 9 ?> 10 11<li> 12<a href="<?php the_permalink(); ?>"> 13<div class="img"> 14 15<?php if(has_tag( 'now' )) : ?> 16<div class="state now"><p>開催中</p></div> 17 18<?php elseif(has_tag( 'fin' )) : ?> 19<div class="state fin"><p>開催終了</p></div> 20 21<?php elseif(has_tag( 'new' )) : ?> 22<div class="state new"><p>NEW</p></div> 23 24<?php endif; ?> 25 26<div class="thum"><?php the_post_thumbnail(); ?></div> 27<div class="opa"><img src="/images/trance_top.png"></div> 28</div> 29<div class="e_title"> 30<h3><?php the_title(); ?></h3> 31</div> 32</a> 33</li> 34 35<?php endforeach; ?> 36<?php endif; 37 wp_reset_postdata(); //クエリのリセット ?> 38 39</ul>

<?php if(has_tag( 'now' )) : ?> <div class="state now"><p>開催中</p></div> <?php elseif(has_tag( 'fin' )) : ?> <div class="state fin"><p>開催終了</p></div> <?php elseif(has_tag( 'new' )) : ?> <div class="state new"><p>NEW</p></div> <?php endif; ?>

の部分で、何のタグを持ってるかで、表示するhtmlを変更したいのですが、
どのように書けば良いのでしょうか?

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

おっしゃっているタグがカスタムタクソノミーのworkstagのことなのであれば、has_tagの代わりにhas_termを使ってください。

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/has_term

has_tagはpost_tag用です。

投稿2020/04/23 03:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ko-nare

2020/04/23 08:55

回答ありがとうございます! has_termでやってみたのですが、条件分岐できませんでした。。。 何か考えられる原因はありますでしょうか。。。?
退会済みユーザー

退会済みユーザー

2020/04/23 11:29

the_permalinkやthe_titleは正常に表示されていますか? global $post;を追加しても駄目でしょうか?
ko-nare

2020/04/24 01:33

ご返信ありがとうございます。 the_permalinkやthe_titleは正常に表示されてリンクしております。 <?php if ($terms = get_the_terms($post->ID, 'workstag')) { foreach ( $terms as $term ) { echo esc_html($term->name); } } ?> とするとタグ名は書き出されます。。 すみません、「global $post;」はどこに追加すべきでしょうか??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問