現状
Advanced Custom Field(以下acf)を使って、フロントエンドでの投稿、更新を出来るようにしたいと思っています。
イメージとしては、プロフィールページのようなものです。
こちらが指定した諸々に、ユーザーが答えて、それを保存する、と言った段取りです。
いわゆるSNSとかであるプロフィールページなのですが、作ろうとするとどうもピンとこない感じになってしまいました。
※acfはPro版を使用していますが、そうじゃない場合でも可能なら、そちらのご意見もお待ちしております!
###試したこと
書いてみたコードです。
※左側に入力欄、右側にその結果が出るように設定しました。
page-hoge.php <div class="row"> <div class="col-md-6"> <?php if ( ! ( is_user_logged_in()|| current_user_can('publish_posts') ) ) { echo '<p>You must be a registered author to post.</p>'; return; } $new_post = array( 'post_id' => 'new_post', // Create a new post 'new_post' => array( 'post_type' => 'team_info', 'post_status' => 'publish' ), // PUT IN YOUR OWN FIELD GROUP ID(s) 'field_groups' => array(2459), // Create post field group ID(s) 'form' => true, // 'return' => '%post_url%', // Redirect to new post url //'html_before_fields' => '', //'html_after_fields' => '', 'submit_value' => 'Submit Post', 'updated_message' => 'Saved!' ); acf_form( $new_post );?> <?php wp_reset_postdata(); //クエリのリセット ?> <?php $args = array( 'post_type' => 'team_info', //投稿タイプ名 'posts_per_page' => -1, 'orderby' => 'meta_value', 'order' => 'ASC' // 条件を追加する場合はここに追記 ); $customPosts = get_posts($args); if($customPosts) : foreach($customPosts as $post) : setup_postdata( $post ); ?> </div> <div class="col-md-6"> <h2>TEAM DATA</h2> <dl> <dt>活動頻度</dt> <dd><?php the_field('team_works' , $post_id); ?></dd> <dt>活動年数</dt> <dd><?php the_field('team_year' , $post_id); ?></dd> <dt>活動頻度</dt> <dd><?php the_field('team_detail' , $post_id); ?></dd> </dl> <?php endforeach; ?> <?php else : //記事が無い場合 ?> <?php endif; wp_reset_postdata(); //クエリのリセット ?> </div> </div>
function.php function add_new_post( $post_id ) { if( $post_id == 'new' ) { // Create a new post $post = array( 'post_title' => $_POST["fields"]['field_52c810cb44c7a'], 'post_category' => array(4), 'post_status' => 'draft', 'post_type' => 'post' ); // insert the post $post_id = wp_insert_post( $post ); return $post_id; } else { return $post_id; } }add_filter('acf/pre_save_post' , 'add_new_post' );
###結果
更新される、というより「常に新規投稿」という感じになってしまいます。
新規の場合は投稿されて、それを更新していく、という感じにしたいのですが…
###条件として
基本的にはこちらから指定した項目に答えてもらう形になっています。
オリジナルの項目をたくさん増やせる〜的なことではありません。
###考えられる原因
・acf_formは正常に動いてるので、データの格納の仕方とその出力に問題があるのか
・そもそもacfを使わない方がいいのか
###最後に
イメージはものすごく出来るのになんだから作ると難しいってのが非常に悔しいです。
これ作るなら別のやり方がいいよ
このプラグインで出来るよ
など、acfにこだわらず別の方法でもかまいません!
皆様のお力をお貸し下さい。
よろしくお願いします!
あなたの回答
tips
プレビュー