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

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

ただいまの
回答率

90.48%

  • PHP

    24450questions

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

  • WordPress

    9098questions

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

PHPの照会システムが含まれるWEBページとWORDPRESSの共存(?)設計について

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 360

yukiko

score 31

タイトルになんと付けていいか…なのですが、「PHPの照会システムが含まれるWEBページとWORDPRESSの共存(?)設計について」としました。
教えていただきたいのは、プログラムソースとかではなく、設計の方向性への助言、あるいは参考情報のURL等です。

とあるサイトのリニューアルについて、提案の方向性を考えています。ざっと眺めたところ、WP等のCMSは現在使っていないようなのですが、新着情報等の更新はしていきたい/軽微な修正は自分たちでやりたいとのこと。

現サイトで気になるところが「製品情報」のページです。プルダウンメニューからの検索ができるようになっています。
プルダウンメニュー例:みかん/りんご/なし/パイナップル…

ここで、「りんご」を選んで検索すると、りんごを使ったメニュー一覧が出ます。「アップルパイ」「りんごのタルト」「りんごのコンフィチュール」…みたいな感じ。ここで「アップルパイ」をクリックすると、詳細画面で動画・説明文が表示されます。詳細画面は全て同じフォーマットです。よくある照会画面の機能です。

おそらくMYSQLあたりのDBに

key|fruits |menu         |video_no|description
001|りんご|アップルパイ|0005124|パリッと焼きあげるポイントは…云々

こんなものが入っていて、動画はVIDEOフォルダあたりに入れてあるのかな?と想像しています。

こういった場合、リニューアルにあたって、この照会システムをどう取り扱うかで悩んでいます。
WORDPRESSを導入をせず、HTML+CSS+PHPのみで作るのであれば、ヘッダーやフッター等をincファイルあたりにして、照会システムを組み込めばいいかなと思います。

わからないのはWORDPRESSを導入する場合です。WORDPRESS自体は、テーマの簡単なカスタマイズしかやったことがないので、この手の照会システムを突っ込む場合に、一般的にはどうすべきなのかがわかりません。
通常のページはWORDPRESS管理下に置いて、照会システムについてはWORDPRESS管理外で、上記のHTML+CSS+PHPと同じ手法で作る方がいいのか、あるいはWORDPRESS管理下において、functions.phpとか?に、なんらかのプログラムを書いて作るものなのか…。

特にWORDPRESS管理下でphpプログラムを作り込む・組み込む方法がわかりません。ショートコードとか、何かそういうものでやるのでしょうか?(←すみません。全然想像がついていません;;)

考え方や参考キーワード、URL等の助言をいただけると助かります。
よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+5

特にWORDPRESS管理下でphpプログラムを作り込む・組み込む方法がわかりません。

「記事」として扱う方法(WordPressで管理し1件に付き1ページを持つかたち)が採れるなら、
urdappleさんの書かれているように「カスタムポストタイプ」「カスタムタクソノミー」「カスタムフィールド」を組み合わせて作るのが定石です。

現在のシステムをそのまま使用して新たに設置するWordPress配下に置くことは案外難しいと思います。表示だけならインクルードするだけで動くものも有ると思いますが、検索の場合少なくとも検索パラメータがWordPressの挙動と当たらないようにする必要があります。

プログラムを書く場所としてはテーマの functions.php の他、プラグインにしてしまうのが一般的かと思います。
他の方法としては、現在データを格納しているDBからAPIで値を返すようなPHPコードを別に作って、ページからはJavaScriptで取得してしまうのも手です。

PHPの書き方に慣れていれば、プラグインを作るのはそう大きな手間でも無いと思います。たとえば「 functions.php の記述が長くなったから」という理由でその部分を切り出してプラグインにされている方もおられます。

【エンジニアのためのWordPress開発入門 (Engineer's Library) | 野島 祐慈, 菱川 拓郎, 杉田 知至, 細谷 崇, 枢木 くっくる |本 | 通販 | Amazon】
https://www.amazon.co.jp/dp/4774187062

【サイトの拡張性を飛躍的に高める WordPressプラグイン開発のバイブル | 宮内 隆行, 西川 伸一, 岡本 渉, 三好 隆之 |本 | 通販 | Amazon】
https://www.amazon.co.jp/dp/4797373520

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/31 23:15

    実務でWPを使ったことがないので(いつも提案とかサンプル作成で終了><)、kei344さんの助言は、大変参考になります。ありがとうございます。ちゃんとお金もらえる仕事で鍛えられないと、なかなか力はつかないですね;;
    参考書の紹介、ありがとうございます。「エンジニアのためのWordPress開発入門 (Engineer's Library) 」は、買ったほうがいいのかなーと、本屋で立ち読みしたことがある本です。プラグインというのも作り方とかさっぱりなので、これから勉強します。

    ベストアンサーをお二人ともに差し上げたいのですが、今回はurdappleさんの方に差し上げたいと思います。また何かありましたら、よろしくお願いいたします。

    キャンセル

  • 2017/11/08 14:37

    「エンジニアのためのWordPress開発入門 (Engineer's Library) 」、昨日購入しました。
    これから勉強いたしますm(_ _)m

    キャンセル

checkベストアンサー

+3

WordPressでもしも自分がやるなら・・・

1つのメニューは1投稿にします。
で、それぞれの投稿にカスタムフィールド(追加情報)で「みかん/りんご/なし/パイナップル」をチェックボックスで選択できるようにしておきます。
もしくは原材料をカテゴリーとして登録する方法もありかもです。
どちらにせよ一覧ページでその該当商品だけリスト表示するのはわりと簡単です。

で、「商品」と「新着情報」を同じ1つの投稿で入力すると訳がわからなくなるので、新着情報の方はカスタムポストを利用します。(通常の投稿とは別にもう一つ投稿項目を作る感じです)
「カスタムポスト」や「カスタムフィールド」で検索するとイロイロと方法があると思いますよ。

機能的にそれほど複雑な内容ではないので、別にPHPでシステムを作って突っ込むよりはWordPressの独自拡張機能やプラグインに任せてしまった方が楽だと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/31 14:33

    ご回答ありがとうございますm(_ _)m

    すみません。わたしの書き方が悪かったかもです。新着情報は、照会システムに新規追加された製品情報を新着情報として出すのではなく、「会社でハロウィーンパーティーをしました」的な、そんな情報のことでした。製品情報とは無関係な。

    また、この製品情報ですが、現在すでに1000件ほど入っています。これを再度入力は厳しいと思うので、もしカスタムフィールド(?)カスタムポスト(?)を使う方法であれば、カスタムフィールドが使うDB領域に、現データのコンバートをしてから利用する…という方法になるでしょうか…。

    「カスタムポスト」「カスタムフィールド」の入力ページはサイト訪問者には見えず、一般の訪問者は検索して照会だけができるのであれば、それも一案ですね。

    ありがとうございます。

    キャンセル

  • 2017/10/31 16:07

    あ、すでに1000件が登録されたDBがあるってことですね?
    それは再投入は面倒くさそうですけれど、WordPress(以下「WP」)にCSVでまとめて記事を投入できるプラグインもあるので、それを利用するなら前段階の投入CSVファイルを作るまでが手間ですが、作っちゃえば投入はボタン一つです。

    ちなみに上のお話でも「新着情報」と「照会システムに新規追加された製品情報」とはまったく別物として話しています。

    > 「カスタムポスト」「カスタムフィールド」の入力ページはサイト訪問者には見えず、一般の訪問者は検索して照会だけができるのであれば
    もちろんそうです。
    入力ページはWPの管理者しか見ることはできません。

    ちょっと長くなりますが少しWPの機能的なお話を・・・

    ・カスタムポスト
    通常の投稿(ポスト)とは別に投稿できるページが作成できます。
    普通WPの管理画面で、左メニューバーに「投稿」というのがあると思いますけれど、それとは別の通常投稿とはまったく無関係の投稿入り口を作れると思ってもらえればいいです。
    ですので、この場合ですと通常投稿を製品情報として、もう一つの投稿を新着情報投稿にする感じですね。

    ・カスタムフィールド
    投稿に独自の入力欄を追加できます。
    通常投稿にも、カスタムポストにも利用できます。
    テキスト項目はもちろんチェックボックスでもラジオボタンでも何でも追加できます。
    もちろん、その1投稿と結びついた情報ですので、自作テーマのテンプレートから、その入力されたカスタムフィールドのキーを基準に投稿をリスト表示させたり、投稿そのものを表示させたりすることができます。

    yukikoさんのおっしゃる仕組みをWPで作るとするとこうなります。

    1,サーバにWPをインストールする。
    2,WPプラグインの「Custom Post Type UI」(カスタムポストのためのプラグイン)と「Custom Field Template」(カスタムフィールドを使うためのプラグイン)をインストールする。(ちなみにカスタムポストもカスタムフィールドも、プラグインを使わなくても使えるようにできますが、functions.phpへの記載や設定など面倒なのでプラグイン利用がオススメです。どちらも日本では一般的なプラグインなのでインストールすればもう日本語化されて動きます)
    3,Custom Post Type UIを使ってカスタムポストを作成する。(和名「新着情報」、スラッグ名「whatsnew」など)
    4,これで、WP管理画面のメニューバーに「投稿」とは別に「新着情報」という投稿入り口ができます。(できれば「投稿」となっているWP管理画面文字列も「製品情報」とかに直したほうがお客様にもわかりやすくていいかもしれませんね「Admin Menu Editor」プラグインオススメですw)
    5,「設定」>「カスタムフィールドテンプレート」から、投稿に付加する情報入力画面を作成する。(原材料名として「りんご」などを選択できるチェックボックスやラジオボタン、もしくはセレクトメニューなど)

    で、PHP一行も書かずに下準備完了w

    今度は記事を表示する方で、こっちはPHPガリガリ書いていきます。
    普通にindex.phpなんかでquery_postsで投稿を呼び出すと通常投稿(製品情報)しか呼び出せませんから、新着情報を呼び出す部分では記事を取り出す部分にWP_Queryを利用してパラメータで「『whatnew』の投稿だけ呼び出すんだよ」ってループを書いてあげます。
    これで終了です。

    原材料別の検索も簡単で、まずはリスト製品情報を表示できるリストページを固定ページででも作成(便宜上「fruit-archive.php」とします)して、上の5の段階で足したフィールド名を「fruit_kind」としたなら、GETで「http://[ドメイン]/[固定ページ名]?fruit_kind=りんご」って呼び出します。
    その固定ページでのループ作成で$_GET["fruit_kind"]を利用して投稿情報を呼び出すWP_Queryを書いておいてあげればいいですね。

    ちょっと長くなりましたが流れとしてはこんな感じです。

    キャンセル

  • 2017/10/31 23:20

    詳しくご説明いただき、ありがとうございます。以前、サンプルサイトを作ったときに、カスタムフィールドとか一回は練習したのですが、使わないと忘れますね;;

    カスタムポストとカスタムフィールドについてご説明いただいていますが、そう、そうなんです。どっちがどっちかよくわかっていなかったというか忘れちゃってたというか…。

    書いていただいた情報をもとに、構成などよく考えてみたいと思います。
    大変助かりました。ありがとうございますm(__)m

    キャンセル

同じタグがついた質問を見る

  • PHP

    24450questions

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

  • WordPress

    9098questions

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