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

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

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

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

2回答

2394閲覧

wordpressの不動産プラグインでカテゴリ別に違う文章を自動挿入したい

kou13

総合スコア11

WordPress

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2016/11/04 04:51

編集2016/11/04 05:47

###前提・実現したいこと
現在Wordpress(4.6.1)の不動産プラグイン(1.7.7)を利用しています。

現在抱えているクライアントは複数の不動産業者の情報を掲載していて
一つの不動産プラグインの中で物件によって問い合わせ先を変更する必要がありました。

そこで考えたのが、カテゴリで複数の担当者名を設定して、クライアントに投稿時に選んでもらい
選んだ業者の連絡先または連絡フォームを記事の本文に自動挿入させて
問い合わせを振り分ける仕掛けを作りたいと思っています。

優秀なプラグインがあるのは承知していますが
可能であればfunctions.phpでの変更で行いたいと考えています。

###発生している問題・エラーメッセージ

ネット検索より、カテゴリー別に振り分けるコードを見つけたのですが
不動産プラグインがカスタム投稿扱いの様で、思った通りの動作(自動挿入と表示)をしてくれません

###該当のソースコード
無断引用失礼します。(http://c-loft.com/blog/?p=1240)

//記事のカテゴリにあった定型文をを追記する function add_fix_message_matching_category($content) { //単独記事でなければ何もしない(ブログトップやカテゴリのページに表示されると見苦しいので) if(!is_single()) { return $content; } $html_tag = "";//HTMLタグ $categoryList = get_the_category();//カテゴリリスト foreach($categoryList as $cat_now) { $now_id = $cat_now->cat_ID;//カテゴリID(今回は未使用) $now_name = $cat_now->cat_name;//カテゴリ名 switch($now_name) { case "categoryA": $html_tag .= "ここに追加したい定型文を記述"; break; case "categoryB": $html_tag .= "ここに追加したい定型文を記述"; break; default: $html_tag .= ""; break; } } return $content.$html_tag;//記事と結合 } add_filter('the_content', 'add_fix_message_matching_category');

###試したこと
category部分をtaxonomy関連に変更してみました

###補足情報(言語/FW/ツール等のバージョンなど)

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

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

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

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

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

kei344

2016/11/04 05:43

引用先は明記してください。
kou13

2016/11/04 05:48

失礼しました。ご指摘ありがとうございます。引用先のURLを追記しました。
guest

回答2

0

ベストアンサー

!is_single() を下記投稿を元に変えてみてください。

【WordPress カスタム投稿タイプかどうか判別したい。 - かもメモ】
http://chaika.hatenablog.com/entry/2015/04/19/090000

また、開発中はデバッグモードを有効にすることをお勧めします。

【WordPress初心者におすすめ!デバッグモードの使い方 | Mignon Style】
http://mignonstyle.com/debug-mode/

投稿2016/11/04 06:19

kei344

総合スコア69400

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

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

kou13

2016/11/04 06:42

回答どうもありがとうございます。 ``` !is_single() ``` を ``` is_singular() ``` 及び ``` is_singular( 'fudo') ``` に変えてみましたが、表示がまだされない様です。 カテゴリリストの部分が問題なのでしょうか・・・ 引き続きtaxonomyでコードを書いて試してみます。 ありがとうございました。
kei344

2016/11/04 06:46

!が取れてますが、それは大丈夫ですか? if(is_singular()){return 'test';} として表示されるかどうかから確認してみてください。
kou13

2016/11/05 00:26

返信遅くなり申し訳ありません。度々の回答ありがとうございます。 !の件は大丈夫です。 if(is_singular()){return 'test';} でtestと表示されました。 ですが元のコードに直すと表示されなくなります。 何かやらかしてそうなのですが、判断できません。すみません
kei344

2016/11/05 05:50

$html_tag からreturnの直前までをカスタム投稿のループ内で実行して、そこでecho $html_tag; して表示されますか?一つ一つ問題をつぶしていけば解決できそうな気がします。
kou13

2016/11/05 06:36

回答どうもありがとうございます。 ご指摘の通りecho $html_tag; の部分かカテゴリを指定するところでうまくいってないようです。 引き続き検証してみます。 もし何かお気付きのことがありましたらまた教えてください。 ありがとうございます。
kei344

2016/11/05 10:28

【get_the_terms:WordPress私的マニュアル】 http://elearn.jp/wpman/function/get_the_terms.html $categoryList = get_the_terms ( 0, "カスタムタクソノミー名(スラッグ)" ); 「$cat_now->cat_ID;」 ⇒ 「$cat_now->term_id;」 「$cat_now->cat_name;」 ⇒ 「$cat_now->slug;」 とか。
kou13

2016/11/06 06:16

コメントありがとうございます。 現在コードを試せる環境ではないため 取り急ぎお礼を申し上げます。 明日にでも結果を報告致します。
kou13

2016/11/07 02:36

おはようございます。 進展なしです。引き続き情報お待ちしております。
kei344

2016/11/07 03:11

カスタム投稿のループ内で、get_the_termsで採れた値をvar_dump();して中身を確認してみてください。そこの値が採れるようにならないと進みませんので。
kou13

2016/11/07 05:00

いつも回答どうもありがとうございます。 $categoryListでNULL get_the_terms()でbool(false) get_the_terms(0,termA)で object(WP_Error)#6411 (2) { ["errors"]=> array(1) { ["invalid_taxonomy"]=> array(1) { [0]=> string(42) "不正なタクソノミー分類です。" } } ["error_data"]=> array(0) { } } という結果になりました。 他のカスタム投稿(別のターム)で試しても同じような結果になりました。 おっしゃる通り値が取れてないようでした。 引き続き色々試してみたいと思います。 ありがとうございます。
kou13

2016/11/07 06:37

get_the_terms($post->ID,'bukken')(bukkenは不動産プラグインのtaxonomy名)で値が取れました。
kei344

2016/11/07 07:15

switchの部分まで問題なくいけましたか? そこまでいけたら、add_filterに渡す関数内の最初のあたりに global $post; とすれば $post->ID が使えるので、それを試してみてください。
kou13

2016/11/07 12:19

コメントありがとうございます。 switchの部分の確認の仕方がよくわかってなくてそれで手間取っています。すみません。 検索しながら色々試していますが、値が返ってきてない感じです。 明日も試してみたいと思います。
kei344

2016/11/07 16:17

$categoryList = get_the_terms($post->ID,'bukken'); echo 'term_id:'.$categoryList[0]->term_id."<br>\n"; echo 'slug:'.$categoryList[0]->slug."<br>\n"; こんな感じで採れていれば switch でも if でも使えば分岐出来ます。
kou13

2016/11/08 01:59 編集

これ以上は自分の手に負えないようなので違う方法で表示させてみました。 kei344さんたくさん教えていただきどうもありがとうございました。 おかげさまでphpが少し理解できるようになりました。 ベストアンサーとさせていただきます。 <?php if ( is_object_in_term($post->ID, 'bukken','termA') ): ?> (スラッグ:termA)に属する記事の時に表示したい内容をかく <?php elseif ( is_object_in_term($post->ID, 'bukken','termB') ): ?> (スラッグ:termB)に属する記事の時に表示したい内容をかく <?php elseif ( is_object_in_term($post->ID, 'bukken','termC') ): ?> (スラッグ:termC)に属する記事の時に表示したい内容をかく <?php else: ?> そうじゃない場合の何かを書く。必要なければ消す。 <?php endif; ?>
guest

0

single-fudo.phpの任意の場所に以下のコードを貼り付け
それぞれの表示したい内容を書き換えてください。

<?php if ( is_object_in_term($post->ID, 'bukken','termA') ): ?> (スラッグ:termA)に属する記事の時に表示したい内容をかく <?php elseif ( is_object_in_term($post->ID, 'bukken','termB') ): ?> (スラッグ:termB)に属する記事の時に表示したい内容をかく <?php elseif ( is_object_in_term($post->ID, 'bukken','termC') ): ?> (スラッグ:termC)に属する記事の時に表示したい内容をかく <?php else: ?> そうじゃない場合の何かを書く。必要なければ消す。 <?php endif; ?>

投稿2016/11/08 02:14

kou13

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問