カスタム投稿でデータを作り、クエリを使って動的な一覧表を作る。

というものを作る事になりました。

それに加えて、一覧表の各項目に入力フォームを用意。

該当のカスタム投稿のカスタムフィールド値を更新する。

という動作も加えます。

以前、「投稿の公開時に別投稿のカスタムフィールドの値を更新する」方法について書きましたが、基本的にはそれを元に考えていきます。

動作の流れを確認しておく

大体の流れ

イメージとしては、「棚卸し」をイメージに近いかもしれません。

①入出庫のデータから計算上の在庫がいくらあるかが表示される。

②実在庫数を数えたら、数が違ったので修正する。

という流れです。

元在庫となるカスタム投稿タイプで公開されている記事(データとして登録された記事)をクエリで一覧表示します。

この時点では、更新されないように条件分岐をしておいて、送信ボタンが押されたタイミングで元データを更新。

再読み込みされた時に、一覧の数字も修正されている。

というのを目標に作業していきます。

HTMLでフォームを作る

今回作成する表は、要するに表です。

その表の項目を埋める内容が、クエリで取得した記事の一覧の内容となります。

なので、まずはクエリとループを書いてしまいます。

テーブルヘッダーとなるものは、while文の前に入力しておきます。

ループ内に書いてしまうと、記事データを取得するたびに表示されてしまいます。

次に表を作成していきますが、今回は分かりやすくtableで作っていきます。

投稿タイトルだけなら良いですが、カスタムフィールドの値を呼び出すのには投稿IDが必要です。

今回もカスタムフィールドの値を呼び出すので投稿IDを取得しておく必要がありますが、クエリで取得した投稿データから受け取れば良いので、the_ID()で取得できます。

入力フォームのname属性を動的に変えるのにもIDを使用しています。

更新するフィールドが別投稿のものとなるので、重複するのを避けるためです。

・・・簡単に、使用するname属性とIDを連結して変数に入れておきます。

このIDをフォーム内の必要なところで呼び出していきます。

ループするので、一記事分作成すれば良いのが気持ち的に楽なところですね笑

で、棚卸表ととらえた場合、連続して作業する可能性も考えると、また同じページに戻った方が効率が良さそうです。

なので、action属性を現在のURLに戻るようにしておきます。

クエリに絞込み条件を指定している場合は、hidden属性で絞込の条件を受け渡すようにしておかないと、違う内容が返されてしまうので気を付けて下さい。

あとは修正数が少ない場合、上とか下に戻るのは面倒だなぁと思ったので。各フォームの横にボタンを設置してしまってます。

ボタンの数が増えて見た目がうっとおしい場合は、ループの外でボタンを作成すればOKです。

最後に、クエリを終了させてフォームの作成は完了です。

update_field()が動作する内容を作る

続いて、送信ボタンを押してページが再読み込みされた時に、カスタムフィールドの値が更新されるようにします。

まずは、update_field()の引数を埋めてしまいます。

引数の解説と一緒にコードを載せておきます。

第1引数はカスタムフィールドキーを指定します。

今回は更新したいカスタムフィールドが2か所にあるので2つ用意します。

第2引数は更新する値ですね。

POSTで受け取るので、filter_input()を使用して安全に処理します。

第3引数は更新したいカスタムフィールドが保存されている投稿IDの指定です。

クエリで呼び出したカスタム投稿に保存されているものを更新する場合は、the_ID()でそのまま取得します。

他のカスタム投稿に保存されているものは、いくつかやり方はありますが。

今回はクエリで使用した投稿の中に「投稿オブジェクト」を使用したフィールドがあったので、そこからIDを呼び出します。

一応変数に入れてますが。ここでしか使わないので、入れなくても良いですね。

投稿オブジェクトは投稿に含まれるデータを取得する時にほんとに便利です。

で、このままだと読み込むために更新の動作を起こしてしまうので、if文で条件分岐を書いておきます。

これで、値の修正で送信ボタンを押したときだけ更新されます。

つまり初回読み込み時に更新動作しないようになりました。

コード全文

ということで、ごちゃごちゃ書きながら来たので、出来たコードの全文を載せておきます。

途中さらっと書きましたが、実はname属性の指定に少しハマりました笑

全部同じ値だと配列になってしまってうまく更新できず。

ループで呼び出されるname属性に一意のものをつけるなら・・・と考えて、気づいたのがIDとの連結でした。

IDって便利です笑

複数の投稿の同じフィールドの更新に便利

一つのHTMLフォームから、複数のカスタムフィールドを更新してみる方法でした。

あまりこういう使い方をすることは無いかもしれませんが、一か所変更を掛ければ複数個所が変更される、ちょっとめんどくさいパターンぐらいで覚えておいても損はないかもしれません。

文字だけで説明するのがなかなか難しかったですが、自分の備忘録的な意味も込めて書いておくことにしました。

WordPress初心者~中級者の方にオススメの本!

WordPressデザインレシピ集

初心者と言ってもある程度WordPressでブログなどを作成した方にオススメです。
基本的なことから、「あれ何だっけ?」と忘れがちな事が良くまとめられています。
コードとプラグインの利用を平行させたWordPressの制作をする際に横に置いておきたい本です。

amazonでレビューをチェック

  ワードプレス関係の他の記事はこちらからどうぞ!  

「ホームページは必要なのだろうか・・・?」

SNSや様々なWEBサービスの登場で、ホームページ以外にもネット上で活動する方法はどんどん増え続けています。
そのようにサービスが増えても、ホームページは中心に据えられる数少ない必要不可欠なツールであると、当社は考えています。
 
株式会社 東建工業-インターネット事業部-では、ホームページ制作のご依頼を随時お受けしております。
 
・企業ホームページの作成
・ブログサイトの作成
・ECサイトの作成
 
など、ご要望に合わせて作成します。ご相談頂いた内容を踏まえて、こちらからご提案もさせて頂きます。
新規ホームページの作成だけでなく、すでに使用されているホームページのリニューアルについてのご相談もお受けしております。
ホームページ開設後の運営・運用についてのご相談もお受けしております。
 
お気軽にお問合せ下さい!
 

 
 

前の記事

次の記事

こちらも読まれています

お問い合せ

この記事の内容や当社についてのお問い合わせはこちらのフォームをご覧下さい。

ご利用前に当社のプライバシーポリシー免責事項をお読み下さい。

送信ボタンを押された時点で、当社プライバシーポリシー又は、免責事項にご同意頂いたものとみなします。