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

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

ただいまの
回答率

88.80%

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

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,212

fkshin

score 12

 現状

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る