FileMakerでWordPress 基本的な編集

FileMakerをSSH経由でMySQLに接続しました。これから何しましょうと、そんなスタート記事の続きです。このページは次の内容について書かれています。
1 リモート接続でテーブルwp_postsを読み込みます。超基本的な接続です。
2 ローカルにテーブルをひとつこしらえます。超基本的なリレーションを一つ作ります。
3 FileMaker内のWebビューアを利用します。ややこしいことはウェブブラウザでやります。

広告

FileMaker Pro を使って WordPress の編集を行ういろんな技のメモ。前回記事は「その1 概要」などと謳いながら、わけのわからないことをがーっと書いていました。今回、反省してちょっと仕切り直します。仕切り直した後、やっぱりあんまりなので前回記事「その1 概要」をごっそり削って書き直しました。その結果、その1と今回のこの記事は前半内容に一部被りもあります。

大枠 FileMakerでWordPress シリーズ記事の続きシリーズ、前回記事 その1概要 の続きです。

wp_postsを読み込む

リモートのwp_postsと接続します。

超基本的な接続

wp_postsはWordpressの中心的存在のテーブルです。これを中心に各データが繋がっています。テーブルの中にはタイトルや日時や筆者、本文などのフィールドがあります。とりわけ重要なのが「ID」ですね。またの名をPost IDと言いますね。このIDがリレーションを司ります。

リレーションシップタブからリモートのPostsを読み込んだところ
リレーションシップタブからリモートのPostsを読み込んだところ

すでに接続済みなのでテーブルを読み込みます。「リレーションシップ」タブのこの画面から下方「+」ボタンで読み込めます。

大雑把に言って、このwp_postsさえあれば基本は抑えられます。これだけでOKと言っても過言。

オカレンス

リレーションシップ画面に読み込んだテーブルを「オカレンス」と呼ぶそうです。

テーブルとオカレンス、いったい何のことでしょう。違いはあるんでしょうか。あります。

テーブルとはデータベースのテーブルのことです。そのテーブルをリレーションで繋げるために「オカレンス」という存在として利用します。エイリアスみたいなもんかな。オカレンスはたくさん作れます。オカレンスを使って複数のリレーションを作れるということですね。この理解で合ってますか?違ったら御免。

FileMakerではリレーションシップタブ画面でこのオカレンスを自在に操り多種多様なリレーションを作ります。

私はこのオカレンスとリレーションについて当初認識不足でした。どういう認識不足だったかというと、オカレンスを使用したリレーションを「データベースの根底を司る力」だと思いすぎていたのです。どういうことかわかりますか?その認識でいたからですね、どうなったかというと、リレーション地獄になったのです。

リレーション地獄

テーブルが増えていくに従ってリレーションシップがねずみ算式に増えていったんです。目眩がするほど張り巡らされたリレーションの蜘蛛の巣地獄、ひとつ接続すれば必要な他の接続が5倍、1個が10個、10個が100個の悪夢のリレーションです。
「なぜこんなことになったのだ」とうなだれてFileMakerファイル(ソリューションというそうです)を捨ててやり直します。

リレーションやりすぎ
ほんの一角。こんなのが倍々で増えていくのでした

これはひとえにFileMakerのリレーションに対する認識不足から来ていました。リレーションをくまなく網羅しようとすれば当然こうなります。「リレーションはデータ全体の根底を司る仕組み」なんかではなかったのですよ。という話はまた日を改めていつか。

最も単純なレイアウト

さて、もっとも簡単な編集ならこれだけで準備OK。このままレイアウトを作れば最低限の編集は出来ます。ひとつのテーブル、ひとつのオカレンス(この一個は自動で作られた)、そしてひとつのレイアウトです。

ベーシックレイアウト

このレイアウトはリモートのフィールドをそのまま表示してるだけです。勝手に触ってはいけないようなフィールドもありますのでそういうのはレイアウトから消しておくのがいいでしょう。

この状態で本文を修正したりタイトルを変えたりできます。スラッグや日付も変えることができます。検索や置換も容易いでしょう。ただし直接触るので事故の元になり兼ねません。接続中のリモートデータですから検索やソートも遅いです。

削除や新規に要注意

ちょっとした修正ならいいんですが、新規や削除は危険です。IDの取り扱いに関わる重大ごとです。Wordpressの奥底の賢い仕組みがあれこれ執り行うものですので、データベースを直接触るのはよほどの達人じゃない限り危険ですからやめといた方が身のためです。

ウェブサイトを利用する

結局ウェブサイトのWordpressから操作するのが最も安全確実なのですが、ここでもうちょっと踏ん張ってみます。

FileMakerからウェブ使えばいいんじゃね。と、わりと本末転倒気味なことを思いつきますね。やってみましょう。

おっとその前に準備として、ローカルのテーブルを作ります。ウェブビューアの話はそのあとで。

ローカルPostsテーブルを作る

さきほどの何の工夫もないただ読み込んだデータを触るだけというのは、楽ちんですが危険だし遅いし、ゆくゆくはローカルで編集してからリモートに反映させるということも目指します。それに、ウェブビューアを付けるにしろ何にしろ、ローカルに何らかのテーブルがないと何もできませんから、ですから遅かれ速かれローカルにテーブルを作らねばなりません。

ローカルのテーブルに最低限必要なフィールドはIDです。IDでリモートとリレーションします。

そのほか、リモートの wp_postsと内容を合わせたフィールドを作っておくのも手ですね。たとえばローカルでコンテント(本文)を書いて最終的にリモートのcontentに送るとか、そんな安全な運営ができるでしょう。ローカルテーブルにどういうフィールドが必要か、ゆっくり考えながらやっていけばいいと思います。

で、最低限IDだけは要ります。すでに記事がたくさんあるのなら、過去記事のID全部ほしいです。ですのでこうします。

リモートwp_postsからフィールドを「エクスポート」してそれをローカルテーブルにインポート

wp_postsからIDだけをエクスポートして、それをローカルのテーブルに読み込みました。

wp_postのレイアウトでファイルメニューから「エクスポート」を選んで、書き出すフィールドでIDを選びます。他のフィールドを追加で選んでもいいと思います。形式はFileMaker形式が楽でしょう。書き出します。

ローカルにテーブルを作ってからそれを読み込んでもいいのですが、何もせずに「インポート」を選んでから読み込み画面で「新規テーブル」を選んでも良いでしょう。読み込みます。

これで、現時点でリモートとローカルで同じIDの記事数が揃いました。ローカルに全くいらない不要なデータもたくさんありますが(例えばpost_statusがauto-draftとか)そういうのはあとで消せばよろしい。

※ あえてまとめて消すのも面倒なので、私はスクリプトトリガで「今開いたこのIDのレコードが不要ならローカルのこのレコードを削除する」って感じのスクリプトを仕込んでます。明らかに不要というのは、post_statusが「trash」「auto-draft」post_typeが「revision」などです。

超基本的なリレーション

ローカルとリモートwp_postsを「ID」でリレーションします。

IDでRelation
IDでリレーションします。

これにより、レイアウトのデザインとしてこんな感じのものが作れます。これはIDだけがローカルのフィールドで、そのIDに紐付いた他のデータをリモートから配置している図です。

ローカルとリモート

今はIDだけがローカルデータですが、他のフィールドが必要なら足していけばいいでしょう。必要なすべての項目がローカルにあれば作業が手軽にはなります。ただし、ローカルからリモートに送るという作業が増えます。

Postsのフィールド

テーブルwp_postsに含まれるフィールドをもう少し見ていきましょうか。

post_type

post_type はポストタイプです。投稿とか固定ページとかカスタム投稿とかそういうものですね。投稿なら「post」固定ページなら「page」です。attachmentっていうのもポストタイプです。画像などのメディアですわな。実は「メニュー」もポストタイプのひとつなんですよ。

ウェブ上のWordpressを触っているだけだと全く異なるものに見えますが実はポストタイプが違うだけで全部このwp_postsに収まっています。ポストタイプの指定以外に違いはないのだと、そういうことが判ると思います。

post_status

post_statusは「draft」(下書き)と「publish」(公開済み)だけ押さえられればあとはどうでもいいかなという、でもそこ大事っていう、そういうフィールドです。下書きと公開済みの他「自動保存」や「ゴミ箱にある」なんかもあります。ローカルではまったく不要なステイタスですね。

ローカルでWordpressデータを編集するに当たっては、ポストタイプとステイタスのふたつがどういう状態なのかが基本的に大事な点となります。

FileMakerでは「条件付き…」とメニューコマンドがあって、それを使って視覚的に判りやすいデザインを作れます。例えば「post_statusがdraftならフィールドを水色に塗りつぶす、publishなら紫色に」みたいな。

これにより、ぱっとレコードを開いただけでポストタイプや状況が色で明らかになるという、ちょっと工夫してフィールドをでっかく撮ったりするとこんな感じの見え方にも出来ます。

条件によって色を変えた例
レコードを開くとタイトル周りの色が目に入るレイアウトデザインにしています

あと、この部分はFileMakerからリモートデータを直接変更しても問題ありません。下書きを完成させてpost_statusに「publish」と入力するとあら不思議、瞬時に公開されています(不思議でも何でもないが)。ポストタイプの変更も一発ですね。「変更」に関してはいろいろ楽ちんにできます。

post_name

post_nameはスラッグのことです。関数やタグを弄ってる人には自明ですね。これを変更するとURLが変わってしまいます。

日付、著者

作成日付、更新日付などのタイムスタンプもwp_postsのフィールドです。post_modified、post_modified_gmtの違いは地域の時間帯です。日本だと9時間加算されています。_gmt のほうが加算前ですね。

著者はpost_authorで、著者のIDが格納されます。

post_content / post_excerpt

言わずとしれた本文と抜粋です。抜粋も同時にwp_postsにあるんですね。

post_parent

意外と重要なpost_parentがあります。これは「親」です。固定ページに親子関係ありますね。「この記事の親はこれですよ」という親のIDがこのフィールドに入ります。

attachmentもpostsであると言いましたね。ポストに含まれる添付画像です。その画像のレコードデータにはpost_parentに該当ポストのIDが含まれるということです。なるほどよく考えられています。

該当記事がない読み込んだだけの画像があったとしますね。post_parentに何らかの記事IDを入れてやれば記事と画像が紐付けされるという案配です。

というような、他にもいくつかフィールドありますが、取りあえずこんな感じで。これらフィールドをローカルに作ってスクリプトで同期させてもよし、リモートのまま表示するもよしです。

では先ほど途中でやめたウェブビューアのお話を続けることにしましょう。

Webビューアを使う

データベースをローカルからさくっと変更できるのは便利ですが新規や削除、その他危険がいっぱいだったり仕組みがややこしい編集は素直にウェブ上で編集するのが望ましいです。Wordpressを介すからこそ出来る処理が実におおいんですよ。直接データに触れるのは本来とても恐ろしい事なんです。

で、ブラウザを使うわけですが、でもここまでくればそれもFileMakerでやってしまおうという本末転倒気味な目的も発生します、という先ほどの話の続きです。

FileMakerにはWebビューアが内蔵されているので簡単なウェブサイトの表示が出来ます。WebビューアでWordpressの編集画面を開いてやればややこしい編集もちょいちょいと出来ます。

もちろん別途ウェブブラウザを起動させるのがもっとも楽で早いのですが。でもFileMakerでそれをやる便利さも実はあります。

digitalboo web viewer
digitalboo web viewer

例えば単純なものならこんな感じのレイアウトデザインがあります。でっかくWebビューア枠を表示します。ポイントは「URL」というフィールドとメモのテキストフィールドです。

WebビューアにどんなURLを表示させるかは自由自在、URLのフィールドは固定の値を持たせず、スクリプトで生成したURLを格納するために存在させます。自動化スクリプトを使えば、現在開いているIDのポスト編集画面、プレビュー、映画レビューサイトならタイトルに付けている映画タイトル名と同じ名前でAmazon商品検索URL、何でもお手の物です。

普通にウェブブラウザだと検索しなければならない文字列が、計算フィールドとスクリプトを利用することで常に現在編集中の内容に準じることが可能になるわけで、これ意外と便利。

ログインだけ面倒

WordPressの編集画面ですが、FileMakerでは当然ながら1password(IDやpasswordを便利に管理するソフト)が使えませんから初回だけログインしなければなりません。この作業がわりと鬱陶しいのでメモフィールド(グローバルなテキストフィールド)にIDとパスワードを置いてあります。ドラッグでログイン項目に入力できるのでメモフィールドは手放せません。

そんな感じで使う人が必要に応じていろいろ工夫します。例えばMovie Booのレイアウトはこんなことにまでなっております。いろんな意味で多機能でやばい状態です。

Movieboo web viewer
Movieboo web viewer

WebビューアのURL作成の例

せっかくなのでいくつかの実サンプルを挙げておきます。

Webビューアを配置したらダブルクリックで「Webビューアの設定」という画面が出てきます。ここであらかじめこしらえたURLフィールドを指定しますね。

URLというフィールドには計算結果を挿入するようにします。スクリプトを作成してボタンに割り当てるなり何なりして計算結果をURLフィールドに送ります。要はブラウザのURL欄と同じようなものになるということですね。優位なのはスクリプトによる計算結果を即座に挿入することが出来る点です。

WordPress ログイン画面

ログインしていないと編集できませんから初回はログイン画面が表示されるようにしております。

新規スクリプトで「フィールド設定」を選びターゲットフィールドにURLフィールドを指定、計算式の指定で “https://(URL)/wp-admin/”とだけ書くという、超単純な仕事です。(URL)はもちろん本物のURLを書くんですよ。Digital Boo なら “https://www.digitalboo.net/wp-admin/” こうですね。ログイン画面で簡単にログインできるよう近くにはメモフィールドがあってIDとパスワードを置きっぱにしています。

グローバルメモフィールドってのはテキスト計算の一時置き場に使ったり意外と有用です。グローバルメモフィールド、何個も作ってます。

WordPress 編集画面

現在編集中のポストをWebビューアでさくっと表示したいときはこんな計算式です。
“https://www.digitalboo.net/blog/wp-admin/post.php?post=” & local_web::ID & “&action=edit” (digitalbooの編集、”local_web”テーブルの”ID”フィールドを利用するという場合の例)

わかりにくいかもしれませんが、必要な文字列を & で繋げているだけです。途中に必要な post_id をIDフィールドから持ってきています。

FileMakerのスクリプトは書き方が独特で、フィールド指定するときは「テーブル名::フィールド名」という書き方をします。このとき ” ” とか ‘ ‘ で囲まない決まりなのでとても見にくいし判別しにくいんですよ。とくに普段wordpress関数だのphpだのを入力している人にはむず痒い奇妙な感覚に包まれるかもしれません。不思議なスクリプトの書き方ですね。

プレビューする

プレビューもスクリプトで仕込んじゃいましょう。もし公開済みのものならプレビューじゃなく公開済みのURLを、下書きのものならプレビューを表示するというスクリプトです。

スクリプトの if 文は簡単に作れますから「もしpost_statusがdraftならこう、publishならこう、それ以外ならこう」みたいに書きます。

公開済みのURLは簡単に判るからいいとして(home urlとslugを組み合わせるだけ)公開前のプレビューはこんな風になりますね。

“https://www.digitalboo.net/?p=” & local_web::ID & “&preview=true”

やはり途中にIDが出てくるのでそこだえフィールドを指定してあとは & でテキストを繋げています。

というわけで簡単ないくつかのスクリプトの例を挙げました。応用すると実にいろいろなウェブページを開くことが出来ます。MovieBooでは特に映画タイトルや人名などたくさん検索して調べることが常態化していますから、URLパラメータを仕込んだスクリプトを組んでおくと随分便利になるんですよ。

ウェブブラウザで開くボタン

あと一つだけ、そうは言ってもウェブブラウザで複数ページを同時に開いて作業することが常でありますから、FileMakerのウェブビューアをブラウザで開くというボタンを横に置いておくのは必須になります。

ボタンをひとつ用意して「URLを開く」(フィールドはURLフィールド、ダイアログなし)を割り当てておくだけです。単一ステップでOK、スクリプトを組むほどのこともありません。これでブラウザでもパンパン開けます。

ボタン設定

あと決まったURLを開くボタンも作っておけば有用です。例えばウェブブラウザで開くMySQLサーバーとか。ブックマークみたいに仕込んでボタンにしておくと便利です。FileMakerの関数ヘルプページURLなんかも仕込んでおくと意外に役に立ちます。

 

ということでFileMakerで編集するWordpressの記事、基本の(仕切り直し)記事でした。

前回ややこしくなった原因はいきなりカスタムフィールドとかタクソノミーとか言い出したからです。そういうのは順序として後回しにすべきでした。

いつかこっそり前回記事をまるっきり差し替えているかもしれませんがそのときはご容赦をお願いします。…と、思った矢先さっそく前回記事を削除して全面的に書き直しました。一部内容が被りますが堪忍してください。
このページのような続き物の記事は「シリーズ記事」という特別な分類(カスタムタクソノミー)をしています。このページは「FileMakerでWordPress」のシリーズの中の「FileMakerでWordpress編集」シリーズということになります。シリーズ記事の場合は、記事タイトルの上部や下部のentry-metaのところなどにリンクテキストとして置いてありますので記事の絞り込みにご利用いただければ幸いです。

 

 

広告

コメントを残す