質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

0回答

1951閲覧

Wordpressでのフロントエンド投稿/更新がうまくいかない

fkshin

総合スコア12

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2018/03/14 12:16

編集2022/01/12 10:55

現状

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にこだわらず別の方法でもかまいません!

皆様のお力をお貸し下さい。
よろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問