GRAPHNOTES

【WP】acf_form()でフロント(固定ページ)での記事投稿を行うメモ

日付:
2017年09月28日
カテゴリー:
Wordpress

Advanced Custom FieldsはWordpressの定番プラグインですが、acf_form()関数によって手軽にフロントページでの投稿/編集を行うことが出来ます。

ユーザー参加型のサイトで、wp-adminダッシュボードを使用させたくない場合などにナイスですね。

Customise WordPress with powerful, professional and intuitive fields

基本

基本形の例

acf_form_head() を最初に読み込みます。
acf_form()でフォームを表示します。

記事の更新

新規投稿

固定ページから制御してみる

post上での更新ではなく、いわゆるマイページとなる固定ページから記事の投稿・更新を管理してみます。
下記のページテンプレートを作成します。

  • 自分の記事一覧(page-my_posts.php)
  • 記事投稿編集(page-edit_my_post.php)

自分の記事一覧(page-my_posts.php)

ログインユーザーの記事一覧を取得し、参照します。
記事編集のページへGETなどでページIDを渡せるようにします。

記事投稿編集(page-edit_my_post.php)


フロントでの投稿画面

 

記事の削除/非公開で登録

acf/save_postフックを使用する

・wp_delete_post()で当該の記事を削除
・wp_update_post()で当該の記事ステータスを更新

上記の場合、カスタムフィールドフィールドタイプ「真/偽」で作成しておき、チェックを入れて更新した場合は記事を削除・更新するようにします。

実際の運用では条件判定を使用して他のフィールドと二段階認証にするなどの対応が望ましいでしょう。


カスタムフィールドで記事のステータスを制御&削除

入力と出力の制限

セキュリティ担保のために入出力の制限を行います。

入力

文字数制限やアップロードファイルの容量制限を行います。
Advanced Custom Fieldsでは管理画面より手軽に設定が行なえます。

出力

XSSなどの対策のためエスケープ処理を行います。

 

引用元/参照

acf_form() – advancedcustomfields.com

【WordPress】カスタムフィールドも含めたフロントエンドでの投稿 その1 – hanano-ya.jp

ACF Form Delete Post – www.advancedcustomfields.com

広告枠