ドロップダウンリストを問合せフォームの選択項目として設置することがあります。

問合せフォームの設置にプラグイン「ContactFrom7」利用する事が多く、元々「ドロップダウンリスト」の設置も簡単にできるため重宝しています。

しかし運用をしていると、項目に変更を加える場合に、多少のHTML知識が必要なため使う人を選ぶとなぁと。たまに感じます。

HTMLタグを使用する

ダブルクォーテーション(「””」)を消さないようにとか、カッコの取り扱いなどの知識ですね。

間違って消してしまい、「あの選べるやつが消えちゃいました!」とか「表示されません」とか言われることがたまにありました。

自社案件の中で起きた問題なので、そこら辺のメンテナンス性を高めるにはどうするかと。

その後の利用を考えて、カスタム投稿のタイトルを突っ込むことにしました。

やる事は2つ

それを実現するためには、functions.phpの編集と、ContactFrom7のタグの設定を行います。

functions.phpを編集する

まずはコードを載せてしまいます。

コメントも入れてありますが、ざっくりと解説します。

カスタム投稿を使うということは、ワードプレスのデータベースに投稿として保存されているデータを呼び出すということになります。

投稿データの呼び出しはサブクエリを使用することで可能です。

なので、get_posts()関数を使用し投稿データを取得します。

$argsで取得する投稿を指定し、foreachで条件に該当する投稿分、セレクトリストに含まれるようにします。

特にカテゴリーを限定する必要が無い場合は、「tax_query」の項目は不要です。今回はカテゴリーを限定してます。

$tagの中にContactFrom7で使用するタグの情報が入っているので、使用する項目に$test_post->post_titleとすることで、投稿のタイトルをリストに入れることができます。

あとは、add_filter()でリストの情報を上書きさせます。

この関数を通して作成されたリストを、使用したContactFrom7のフォームで使えるようにします。

フォームのタグ名を指定した変数に合わせる

functions.phpに入力するコードの最初の方にでContactFrom7のタグ名を指定しています。

この「$tag[‘name’] != ‘test-tag’」で指定したタグ名でContactFrom7のタグを使用します。

タグの置き換え

これで、このselectのリストは、カスタム投稿タイプ「test」のカスタムタクソノミー「test_cat」の「test-term」に分類された記事のタイトルが、セレクトボックスのリストに追加されます。

カスタム投稿で他の使い道もある可能性

今までContactFrom7のselectを使って項目を設定してきたんですが、最初に書いたHTML知識が多少必要なため、メンテナンス性が悪くなっていました。

それを分かりやすくしつつ、カスタム投稿タイプに細かい情報を追加する予定もあり。あえてカスタム投稿タイプを使用し、投稿データとして保存できるようにしました。

そうすれば、ワードプレス本来のブログの機能を使いつつ、項目管理がやりやすくなるからです。

ワードプレスのカスタマイズ時には、ワードプレスが持っている機能をどのように使うかを考えて、組み込んでいくことを考えます。

  ワードプレス関係の他の記事はこちらからどうぞ!  

「ホームページは必要なのだろうか・・・?」

SNSや様々なWEBサービスの登場で、ホームページ以外にもネット上で活動する方法はどんどん増え続けています。
そのようにサービスが増えても、ホームページは中心に据えられる数少ない必要不可欠なツールであると、当社は考えています。
 
株式会社 東建工業-インターネット事業部-では、ホームページ制作のご依頼を随時お受けしております。
 
・企業ホームページの作成
・ブログサイトの作成
・ECサイトの作成
 
など、ご要望に合わせて作成します。ご相談頂いた内容を踏まえて、こちらからご提案もさせて頂きます。
新規ホームページの作成だけでなく、すでに使用されているホームページのリニューアルについてのご相談もお受けしております。
ホームページ開設後の運営・運用についてのご相談もお受けしております。
 
お気軽にお問合せ下さい!
 

 
 

前の記事

次の記事

こちらも読まれています

お問い合せ

この記事の内容や当社についてのお問い合わせはこちらのフォームをご覧下さい。

ご利用前に当社のプライバシーポリシー免責事項をお読み下さい。

送信ボタンを押された時点で、当社プライバシーポリシー又は、免責事項にご同意頂いたものとみなします。