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

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

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

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

PHP

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

Q&A

解決済

2回答

379閲覧

PHPを「functions.phpに書くか書かないか?」区別する勘所は?

irukairuka

総合スコア15

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/09/09 17:12

編集2018/09/10 00:45

WordPress初心者に、functions.phpの使い方についてお聞かせください。

たとえばこのようなコードをsingle.phpに書く場合、

php

1<ul class="custom-tags"> 2<?php 3if ($genres = get_the_terms($post->ID, 'custom-tag')) { 4 foreach ( $genres as $genre ) { 5 echo '<li>'.esc_html($genre->name).'</li>'; 6 } 7}?> 8</ul>

上のように8行程度であっても、かつ、使うシーンが一度だけであっても、single.phpでなくfunctions.phpに次のように書いて、

php

1<?php 2function custom_tags(){ 3 if ($genres = get_the_terms($post->ID, 'custom-tag')) { 4 foreach ( $genres as $genre ) { 5 echo '<li>'.esc_html($genre->name).'</li>'; 6 } 7 } 8} 9?>

そしてsingle.phpでは<?php custom_tags; ?>として1行に収める方が適切でしょうか?


あと、functions.phpですが、上のように「➀functions.phpでechoにする」のと、「➁functions.phpではreturnにして、single.phpでechoにする」のと、それぞれ適切なケースを知りたいです。

初歩的な質問で恐縮ですが、どうぞ宜しくお願い致します。

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

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

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

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

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

m.ts10806

2018/09/10 00:43 編集

タイトルには要件を書いてください。もう少し質問内容に寄った具体的なタイトルの方が質問一覧を見たときに分かりやすくなります。
irukairuka

2018/09/10 00:44

ありがとうございます。修正致しました。
m.ts10806

2018/09/10 00:45

これはfunctions.phpの使い方をある程度把握した上でより効果的(効率的?)な書き方を模索しているのか、functions.php自体の使い方について確認したいのかどちらでしょうか。
guest

回答2

0

設計思想としては kszk311 さんの回答でもっともだと思いますのでもう1つ別視点で書いておきます。

特にWordPressのテーマ作成の場合、制作の体制によってベストな方法は異なることがあります。

デザイン・HTMLコーディングをする人と、PHPのコーディングをする人が異なる場合、なるべくfunctions.php を利用してPHPコーディングをするようにすることで、テンプレートファイル(single.php など)内の書き方を素のHTMLに近づけることができるので、分業がしやすくなります。
※PHPのコード破壊が起こりづらいとか。

逆にどちらも1人でやる場合、むやみにファイル構成を複雑にするだけになっていきますので、単純にkszk311 さんのおっしゃるように、再利用性で考えるのがベターかと思います。

その他、そのテーマのコピーを使って派生したテーマを作る必要があるとか、それ以降の展開予定によって適切な構成は変わりますので、常にこれがいい、というやり方はないかもしれません。

投稿2018/09/10 02:39

kaz.Suenaga

総合スコア2037

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

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

irukairuka

2018/09/10 02:45

個人的な趣味のレベルなので分業という視点はございませんでした。ベストアンサーは決定してしまいましたが、アドバイスどうもありがとうございます。
guest

0

ベストアンサー

一度だけと決まっているのなら、特にまとめる必要はないのでは?
今後、別の箇所で使うかもしれないと思う場合は、まとめても良いかなと思います。

例えば

テーマファイルのディレクトリ - inc - custom_tags.php - function.php - sinsgle.php - ...

などとして、どこからでもinc/custom_tags.phpを詠みこむやり方でも良いわけです。
function.phpを出来るだけ触りたくないとか、あるかもしれませんし。

➀functions.phpでechoにする」のと、「➁functions.phpではreturnにして、single.phpでechoにする」

上記のやり方もあるので、function.phpに関わらずですが、echoするだけの処理なら、別にechoまでしちゃえば良いと思います。
拡張性を考えれば、returnしちゃったほうがいいのかなと思いますけどね。

どちらにせよ、返すのか表示かで名前は考えた方が良いと思います。
例えばcustom_tags();だと、もし誰かに引き継いだ場合、タグ情報をどう操作するのかぱっと見分からない可能性があるので。echo get_custom_tags();で出力するのかecho_custom_tags();にするとか。

投稿2018/09/10 02:10

編集2018/09/10 02:19
kszk311

総合スコア3404

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

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

irukairuka

2018/09/10 02:32

なるほど。よくわかりました。ありがとうございます。名前の件についてもアドバイス感謝致します。
irukairuka

2018/09/10 02:37

すみません、1点だけ教えて下さい。 質問で functions.php にとしてあるコードですが、これは inc/custom_tags.php に書いてそのファイルを呼び出す。という方法も一般的なのでしょうか? このようなコード(出力情報を関数化したコード?)は全てfunctions.phpにまとめて書くものかと思っておりました。
kszk311

2018/09/10 03:07 編集

>全てfunctions.phpに それでも全然OKです。 一般的かどうかは分からないですが、一つの考え方としてはありだと思います。 ちなみに、自分が引き継いだ案件で、資料とかなくソースだけしかなかったものがこのようなルールでしたが、非常に理解しやすかったです。 function.phpには、返り値のあるPHPだけの処理、クエリ処理、カスタム投稿に関する処理、管理画面のカスタマイズ処理などでした。
irukairuka

2018/09/10 03:34

ご返信誠にありがとうございます。それは分かりやすいかもしれませんね!今後の参考にさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問