FileMakerでWordPress カスタムフィールド

FileMakerでWordPressを編集するシリーズ、今回はカスタムフィールドについてです。

広告

カスタムフィールド postmeta

カスタムフィールドのテーブルは postmeta です。

postmeta

このテーブルはpostsのIDで照合され、ポストとの繋がりが密接です。というかポストに直接紐付けされた追加データでメタ情報だからシンプルなのも当然です。

  • post_id: 連携するポストのIDです
  • meta_id: postmetaの固有のidです
  • meta_key: キー、項目タイトルというか分類というか、キーです
  • meta_value: バリュー、キーに対する項目名です

これをFileMakerで扱うとき、wp_postsテーブルのIDとpost_idを照合してリレーションするだけで事足ります。

postsとpostmetaのrelation
postsとpostmetaのrelation

新規カスタムフィールド

ポストに紐付く新規のカスタムフィールドを作るのは何の苦労もありません。IDとpost_idで繋げたリレーションを作って、postmetaのほうに「レコードの作成を許可」しておき、これをpostsレイアウトにポータルで表示させます。keyとvalueを入力すれば勝手に新規カスタムフィールドが作成されます。

リレーションオプション

単数と複数

postmetaのデータには単データと複数データがあります。単データか複数データかというのは大きな違いで、いろいろとスクリプトの処理も変わってきます。

FileMakerの世界では「繰り返しフィールド」というものがありました。今でもありますけど推奨されておらず別テーブルを繋げてポータルで表示したほうがいいとされています。使い勝手は繰り返しフィールドが楽ちんですよね、リレーションにするとスクリプトとかめちゃめんどいことになります。しかしちょっと複雑なことをやろうとするとこれは別テーブルのリレーションが楽であると思えてくるでしょう。

リモートのpostmetaをFileMakerでローカルに操作するとき、当然ながらリモートのwpテーブルは弄れませんからリレーションの約束に則ることになります。

ローカルで編集してリモートに送信するといった一手間かけた運営の場合、postmetaの単データは扱いがちょー簡単なものになります。何だったらローカルpostsにメタデータフィールドとして必要なだけ作ってやってもいいくらいです。

計算フィールドやスクリプトで自動化しているようなメタデータの一部はローカルに専用フィールドを作ってそっちで入力や転記を済ませ、あとからpostmetaに送信するということを一部でやっています。ローカルの専用フィールドだとスクリプトや計算式を書くのが楽だからです。ただ、これあまりやり過ぎるとローカルとリモートでの同期がかえって面倒なことになり兼ねません。FileMakerの達人ならリモートのポータル相手にポイポイとスクリプトが書けるんでしょうけどそうじゃない人にとって判断の分かれ目になると思います(自分がそうだから)

postmetaをポータル表示する二つの方法

postmetaをpostsのレイアウト上にポータル表示して編集作業を行います。このとき、どう表示するかふたつの表示方法を探ってみました。二つの表示方法ってのは、要するにフィルタの違いでありますが、使い勝手的に「ふたつの」と言っていいんじゃないかと思いましてそう書きました。

専用ポータル

ある固有のmeta_key専用ポータルという意味です。WordPressのサイトによって、ポストで入力するmeta_keyはある程度決まっていると思います。その決まったmeta_keyだけを表示するポータルです。ポータルのフィルタに

wp_postmeta::meta_key = “一意のkey”

と設定します。このポータルでは指定したmeta_keyだけが表示されます。入力作業がはかどります。このとき、オブジェクト名をmeta_keyと同じに設定するとさらに良いことがありますので、自分は専用ポータルの場合オブジェクト名をmeta_keyに合わせておくことを必須としています。

専用ポータルの例
専用ポータルの例

 

一覧ポータル

一覧ポータルはkeyを絞らずにpostmetaを羅列した状態です。入力の際、その都度meta_keyを入れてからmeta_valueを入力します。いろんなメタデータを次々に入力しなければならない、あるいは入力済みのメタデータを一覧で確認したい場合などはこっちの一覧表示が使い勝手が良かったりします。

一覧ポータルの例
一覧ポータルの例

こちらすべてのmetaを表示する一覧ですが、それでもフィルタを設定したほうがいいでしょう。

wordpressやプラグインがいろいろとメタ情報を仕込んでいます。見ても仕方がないようなのとかありまして、邪魔です。なので、要らないkeyをまとめてフィルタしてしまいます。

ポータルフィルタの一工夫

ポータルのフィルタは何かとややこしいところがあって、思うように効かないこともありますが上手く設定できると途端に便利になります。

ちょっと一工夫したフィルタの実装というのを私やっております。

フィルタを別テーブルのフィールドで管理

そうそう、FileMakerで作業するときにローカルに作っておくと便利なテーブルのアイデアというのがいくつかあります。「グローバル格納のデータばかり集めたテーブル」というのも定番のひとつかもしれません。

グローバル格納のポータルフィルタフィールド

グローバル格納のシステマチックなテーブルを作って、いろいろとそこに仕込んでいます。そのひとつがポータルフィルタです。

例えば、postmetaの表示不要のkeyをまとめてフィルタ指定したフィールドを作っていて、基本どこかのレイアウトでpostmetaのポータルを作るときはこのシステマチックテーブルの不要キーフィルタを読み込むようにしています。

個人的な一例ですが、こんな感じの「不要keyフィールド」があって、postmetaポータルで何かを作る際に常にif-elseのデフォルト値として指定します。

専用テーブルによるポータルフィルタレコード

これにはさらに発展系があって、ポータルフィルタだけを扱うテーブルも追加でこさえまして、そっちではいろんなパターンのフィルタをレコードとして登録しています。これをリレーションで繋げて、さまざまなポータルのフィルタとして連携するという、そんなこともやってます。

portal_filter_table
ポータルフィルタだけを扱うテーブルでいろんなフィルターを一括管理

これの便利なところは、いちいちレイアウトモードでポータルをダブルクリックしてフィルタをダブルクリックしてという超面倒な作業が軽減されることです。

もうひとつ、上の方の図でご覧の通りポータルの絞り込みに使えます。値一覧を使ったプルダウンメニューに大まかな分類を仕込み、そこで選んだものによってフィルターが切り替わるという素晴らしい仕組みを実現できました。

ポータルフィルタについてはWordPressの管理に留まらずFileMakerのTipsですけど、ただでさえポータルフィルタって難しくて謎挙動ですからいろいろたいへんですね。自分は今上記のような便利システムが作れてご満悦ですがこれをどうやって作ったのかそろそろ忘れかけています。これなんだっけ?ってなりかけていますので、この件だけで独立した記事を書いて残しておくのも自分のために役立ちそうです・・・

ラベル

これも例に挙げた図にありますが、ラベルの工夫ということもやっています。これはpostmetaに限らずタクソノミーもひっくるめて対応しています。

ひとつは、+ボタンでラベルが自動で出現する仕組み、もうひとつはvalueを入力すると自動でラベルが付くという仕組みです。ちょっとまだ中途半端な実装なんですがわりと便利に使っております。

これを実現するためにまたまた別テーブルを作っています。それは「ラベル」テーブルです。「ラベル」テーブル、便利ですけど枝葉の話になりますからここでは割愛してまたの機会があれば。

カスタムフィールドは何となく楽

ということでカスタムフィールドのことをさらりと書いておきました。ポータルについては肝心な部分をすっ飛ばして書いたので誰の役にも立たないかもしれませんがもしもうちょっと詳しく書けと言われたら詳しく書きます。

SSHトンネル接続経由でMySQLサーバーに接続したFileMakerでWordpressを編集するというシリーズの記事です。接続については  FileMakerでWP MySQL接続 あたりの記事をお読みください。
広告
FileMakerでWordPress / FileMakerでWordpress編集
カテゴリーソフトウェア, WordPress
このエントリーをはてなブックマークに追加

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください