テンプレートphp内では echo $hoge などの使い方をしており 変数が100個くらいコード内に散らばっています。そのテンプレートを使ってページごとにそれら100個の変数に値を設定して異なったウェブページを生成させたいという(一般的なphpの設計)思想です。
投稿または固定ページから それらphp変数の値設定ができないかといろいろと調べましたが(ショートコードやグローバル変数でできないのか等も)現状 できる方法が見つかっておりません。お答えは簡潔で構いません。
1)投稿または固定ページから可能
2)投稿または固定ページ以外の方法で可能
3)WordPressではこの様なテンプレート構成にはしない。
お答えが、1)であれば引き続き自身で調査します。2)であれば簡単にそのWP機能を教えて頂けないでしょうか。3)であれば今回の様なケースでテンプレートphpをどの様な構成に作りあげるのが一般的なのかなどを簡単にでもご教授頂けましたらありがたく思います。
>WP超初心者さま
ご相談ありがとうございます。
まず前置きとして、僕はそれほどコードをがりがり書くタイプではないので僕の答えが全てとは思わないでください。
質問者さまと同じようなテンプレートは作ったことがあります。functionsにサイトタイトルやフッター表記、住所諸々を入力していくと元となるテンプレートを使ってサイトの基本構造が出来上がるというものです。
この場合はfuctions.phpを直接管理する形になるかと思いますが、これを固定ページ・投稿でやりたいということですよね。
実際にやったことはないのですが、WordPressにはカスタムフィールドというものがあります。
カスタムフィールドは、タイトルや本文以外に任意の入力欄を設け、独自に命名した項目・値をDBに保存しておくものです。
例えば、レシピサイトを作る時に材料や分量をテキストボックスに入力させ、そのデータをテンプレート側で取得し表組にしてページに表示する・・・といった感じで使われます。
カスタムフィールドをUIで管理できるメジャーなプラグインにACFがあります。カスタムフィールドの入力欄をUIから簡単に作れるものです。一般的なフォーム属性はすべて使えます(テキストボックス・チェック/ラジオ・テキストエリアなども可能)
Advanced Custom Fields – WordPress
ある特定の記事/ページにサイトデータに関する入力欄を設け、そのIDを指定して全てのフィールを取得、テンプレート内で使う・・・
ということができなくはないのかなと思いました。
ACFを使っていれば独自の取得方法があるのですが、基本はget_post_metaです。
関数リファレンス/get post meta
普通はsingle.phpなどで各記事のIDに紐づいたカスタムフィールドをその投稿ページに表示させるために使われますが、「$post_id」が指定できるので決め打ちすればそんな使い方もできるかもしれませんね。
繰り返しになりますが実際にやったことはないです。(検証したら是非可否を教えてください!)
例えばIDが1となる「Hello World」のページは必ず存在していますしね。
よって回答は 1)投稿または固定ページから可能(かもしれない)となります。
基本、投稿内にPHPは書けません。書けるようになるプラグインなんかもありましたが、セキュリティ上のリスクがあるということで推奨はされていないでしょう。
参考にして頂ければ幸いです。