ホーム > 投稿記事 > 一括取得で明快に!カスタムフィールドの値が複数あるときの対処法(WordPress)

一括取得で明快に!カスタムフィールドの値が複数あるときの対処法(WordPress)

投稿日 : 2017年03月10日   更新日 : 2019年10月04日
カテゴリー : WordPress
一括取得で明快に!カスタムフィールドの値が複数あるときの対処法(WordPress)の画像

こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
私はPHPエンジニアとして6年~の経験があります。WordPressは2年~の経験があります。
ここでは主に過去に納品した案件や自サイト運営(エンジニア婦人ノート)で遭遇したことについて書いています。

WordPressのプラグインでカスタム投稿、カスタムフィールド機能を使っている人は多いと思います。

私はよく「 SmartCustomFields 」を使っています。

登録された値を取得するときに、「何回もDBにアクセスして、表示速度に影響が出ている」ケースを見てきました。

そもそもプログラムを実行するにあたり、不要なアクセスや処理はしたくないもの。

複数発生する場合は、上手にまとめて一回で取得してしまいましょう!

カスタムフィールドの表示方法(SCFの場合)

カスタムフィールドのデータを取得するときによく書かれているやり方はこちらです。

$customData = SCF::get('test-custom');
echo $customData;

SCF::get(’test-custom’)でデータベースにアクセスし、指定の値を取得してきます。

でもこれがいくつもある場合だったらどうなりますか?

使った分だけデータベースへのアクセス回数が増えて、表示速度に影響が出ることがあります。サーバーのリソースも多く使ってしまうことになります。

そんなにたくさんないならひとつひとつ書けばいいですよ。

ページの表示があまりにも重いと見ている側もストレスで、見てくれないかもしれませんし、機会損失につながってしまうかも。

解決策

$customData = get_post_meta($post->ID);
foreach($customData as $data) {
	// データを取り出す処理
}

やっていることは単純です。

postmetaに入っている記事IDの情報を取得して、そこからforeachで取り出しているだけです。

これだとデータベースにアクセスするのはこの一回だけで済みます。取得したあとは、こっちで自由にごにょごにょすればいいのです。

業務でやった某サイトではこうすることでページ表示のパフォーマンスは上がったし、ついでにソースの可読性も上がったっていう実績があります(それだけカスタムフィールドの項目数が多かったと言うことでもありますが)。

データは一度に取ってきてからごにょごにょしましょう。その方が分かりやすいと思います。好みもあるかな?

因みにこの方法でとってくるとデータは連想配列で返ってきます。

繰り返し項目の場合も配列からデータを取り出す、うまいことしたら割と簡単にできます。

リッチテキストエディタ仕様、「WYSWING」に注意

WordPressのSmart Custom Fieldsを使って投稿場所を増やし、その投稿の項目をWYSWIGにすると、通常の投稿エリアのような多機能エディタが使えるようになります。

ですが、これを使っているものがあった場合、前述の方法でやるとテーブルと本文の間に無駄な改行がたくさん入ってしまいます。

崩れる原因は「<table>を使っているか」

<table>タグがあると、WordPressの自動整形機能で崩れてしまいます。

WYSWIGのビジュアルモードで編集しているときにテーブルタグを入れると、仕様で<p>&nbsp;</p>が入ってしまうようで、見た目改行たくさんになってしまうんです。

ぐぐるとたくさんそれのお悩みが出てきます…!

改行がたくさん発生した場合の対処法

WYSWIGの項目だけは別途取得する必要があります。

$data = SCF::get(カスタムフィールド名);

これで取得した情報はWordpressの自動整形機能に阻まれることはなくなります(今のところ問題は出ていません)。

まとめ

  • カスタムフィールドを使って複数の項目を1ページで出したいとき、データベースに一度だけアクセスして取得してくるとパフォーマンスがよくなる
  • 但しWYSWIGを使っているカスタムフィールドは<table>タグとWordPress自動成型機能で表示が崩れる場合があるので注意

WordPressは手軽に扱えるCMSとして、とても優秀だと思います。

カスタマイズしてより使いやすくする仕組みを作るときは、ただ表示できればいいというだけでなく、表示速度やサーバーリソースのことも考えて作れるようになるとより良いですね!

楽しい物造りを

NaoLight

自分のブログやサイトを、楽しく作ってもらえたら。

プログラムを使って望み通りに、拡張しやすく、自分の思うように。

できたときに、すごく楽しい!と思ったら。

控えめに言って、「最高です」。

NaoLight -NAOT-(なおらいと、なおと、と呼んでください)はそんな思いをカタチにする、WordPressのテーマです。

ご購入はこちらからお願いします(BOOTHへ移動します)。

Nao Light-NAOT-公式サイト



この記事にコメントする

入力エリアすべてが必須項目です。承認制のため、表示までに時間がかかる場合があります。

CAPTCHA


内容を確認の上、コメントをお願いします。