カスタムフィールドのクイック編集への入力フォームの表示
この記事は公開または最後に更新されてから2494日が経過しています。情報が古くなっている可能性があるのでご注意下さい。
『カスタムフィールドの投稿入力フォームへの表示』と『カスタムフィールドの投稿一覧への表示』はできました。
残すところはと、クイック編集においてカスタムフィールドのデータの更新が出来るようになることです。
クイック編集フォームに新たな項目を加えるにはアクションフック "quick_edit_custom_box" を使用するとのこと。
あとの感じは『カスタムフィールドの投稿入力フォームへの表示』の時とだいたい似たようなものですが・・・。
カスタムフィールドの情報は『カスタムフィールドの投稿入力フォームへの表示』のところで既に $meta_cr配列にして作成してあるのでそれを使用します。以下です。
そして、html 出力関数。
5行目から10行目の "nonce" に関しては既に書いていますからそちらをご覧ください。→『カスタムフィールドの投稿入力フォームへの表示』nonceに関して
が、しかし・・・。
実はこれによって出力されるhtml のフォームには、既存のデータがあったとしてもそれが表示されておらずフィールドは空のままになっています。と、いうのもアクションフック "quick_edit_custom_box" においてはパラメータで投稿の ID が渡されず、グローバル変数の $post も使用できず、投稿のID を取得する方法が私にはわかりませんでした。
ネットで調べるとjquery で代入するとか、やっているのはあるのですが意味がよくわからない。
と思っていたら、ちゃんとwordpress のcodex にしっかり出ていました。なんのこっちゃ!
書いてあるのはjquery ファイルのfooter での読み込み方法と実際にデータを挿入するためのjquery のコード。
まずは読み込み用のphp。jquery のファイル"cf_edit.js"はテーマのフォルダと同じところにアップしてあります。codex では特定の投稿の種類(post とかカスタム投稿とか)でだけ読み込む方法になっています。
そして、jquery ファイルの中身。
23行目の"get the data" 以降が独自のコード。そこまではcodex にあったものをそっくりそのまま引用して使ってます。
"get the data" の文も変数名が違うだけで同じように見えますが、".column-customfield p" の最後の"p" が余計にくっついてます。
実際の取得する対象となっているここのサイトのこの部分のhtml はというと、
となっていて、取得した変数の中身が、
<p style="color:#008080;">First ID : 2530<br>撮影日時 : 2014/10/25<br></p>
というように"p" タグまで含まれてしまうことの対処。
そしてそれによって得られたカスタムフィールドのデータは、書き出す時にまとめてしまっているので、
First ID : 0<br>Japanese : エナガ<br>English : Long-tailed Tit<br>Binomial : Aegithalos caudatus trivirgatus<br>撮影日時 : 2011/05/01<br>Romanized : Enaga<br>background image : tit-rub<br>初見時状況 : 1<br>
と、"<br>" で区切った"カスタムフィールド名 : 値" の形になっています。
まずはこれをsplit()により"<br>"で個々のカスタムフィールドごとに分けて配列にし、その個々に分けられたカスタムフィールドの文字列をふたたびsplit() によりフィールド名と値に分け、あらかじめ作成しておいたカスタムフィールド ラベル用タイトルとそのinput要素のnameに指定した文字列との連想配列を使ってinput要素のnameを取得し、そのinput要素のvalue に代入しています。
データ更新用の関数は『カスタムフィールドの投稿入力フォームへの表示』入力した値の保存関数で作成したものを兼用しています。 カスタムフィールドのデータを削除する時は"checkbox" をチェックした時とし、空のデータ送信時に関しては何もせず、無視するという事にしています。
Post : 2014/11/07 17:25
Comments feed
Trackback URL : https://strix.main.jp/wp-trackback.php?p=48278