こんにちは。4日目担当の俺です。
本日のお題はこちら。
カスタム投稿で追加したフォームのUI微妙じゃない?ついプラグイン使っちゃうんだけど
※よくわからないので本人に聞いたら、カスタム投稿ではなく、カスタムフィールドの話だったらしいですのでカスタムフィールドってことで話し進めます。
でも…
カスタムフィールドで追加したフォームってか追加しないでもカスタムフィールドはありますよね。表示オプションで隠されてる場合がほとんどですが。
このデフォルトのやつが使いにくいってことかな?
そもそもプラグインをつかってて、そのフォームのUIが気に入らないなら、他のプラグインを使いましょうね、としか言えないんですけど。
それかプラグインによってはフォーム周りのCSSをいじれる画面がついてるものもあるかもしれないしそっちに乗り換えてもいいですね。
それも気に入らないなら、もう自分で1からカスタムフィールド定義するしか無いんじゃないかしら?
カスタムフィールド用のフォームを作る場合には add_meta_box() という関数を使います。(WordPress 2.5 以降限定)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
add_action('admin_menu',function(){ $id = 'my_custom_metabox_01'; // 管理画面上のメタボックスに振られるID $title = 'メタボックス01'; // メタボックスのタイトル $callback = 'disp_metabox_01'; // HTML出力するための関数(呼んだ先でHTMLを吐かせる) $page = 'post'; // 表示する投稿タイプ(post , page , link , またはカスタムポストタイプのスラッグ) $context = 'normal'; // 表示される部分(normal , advanced , side) $priority = 'high'; // 表示優先度(high , low) add_meta_box($id,$title,$callback,$page,$context,$priority); function disp_metabox_01() { echo '<input type="hidden" name="cfNonce" id="cfNonce" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; echo '<label for="input01">てすと</label><input type="text" id="input01">'; } }); |
こんなふうに書くだけでほら
簡単にフォームが作れましたね。
でもこれだとただフォームを表示するだけで保存とかはできませんし、投稿に紐付いてるカスタムフィールドのデータがあっても表示もされません。
ですが逆に言えば、メタボックスを追加したらかならずデータを入れたりしなければいけない、というわけではないので、本来とは全く違う使い方、例えば「使い方ヒント」みたいなのを書いてみたりとか、もっと他の使い方もできるかもしれませんね。
ちょっと話がそれてしまいましたが、あとはここに保存だったり、既存データの表示だったりって機能をつけていけば、オリジナルのカスタムフィールドフォームがつくれそうですね。
保存とかそのへんはちょっと時間が無いので今回は割愛しますが、Codex に詳しく載ってますのでよかったら読んでみてください。
関数リファレンス/add meta box – WordPress Codex 日本語版
これはWordPressひとりアドベント・カレンダー2015の記事です。
WPAC2015Soloについてはこちらをご覧ください。
コメントする