サポート » 使い方全般 » カスタム投稿タイプで、独自のテーブルにデータを保存させるような仕組

  • いつも大変お世話になっております。

    既存のサイトをリニューアルするに当たり、
    一部のテーブルを現在のまま利用する必要が出てきました。

    カスタムフィールドを使ってメタデータを保存させる仕組みはよく利用するのですが、
    独自のテーブルにデータを保存させるようなフォームを、
    投稿画面に表示させたいと思っています。
    (既に保存されている場合には、その内容をフォームに表示)

    何か、良いアイディア、参考になるかもしれないページ等ありましたら、教えて戴けませんでしょうか。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • save_post というフックが用意されています。
    https://codex.wordpress.org/Plugin_API/Action_Reference/save_post
    なので、save_post で、「独自テーブルを更新する」を実行、という方法が使えます。

    独自テーブルからカスタムフィールドにデータを移す、より簡単かどうかは分からないですけど。

    トピック投稿者 yukiforweb

    (@yukiforweb)

    Fumito MIZUNO様
    ご回答有り難うございます。

    投稿画面に独自フォームを表示させるってどうしたらいいのだろうと考えていたのですが、
    そこは、カスタムフィールドを使う時と同様に、add_meta_box();を使えばよかったのを思い出しました!

    合わせまして、こんな感じでやってみたいと思います。

    add_action('admin_menu', 'add_extra_form');
    add_action('save_post', 'save_extra_data');
    
    function add_extra_form(){
        add_meta_box('meta_data', '追加フォーム', 'extra_form', 'custom_post_type_name', 'normal', 'high');
    }
    
    function extra_form(){
        global $post;
    
        echo '<h2>追加フォーム</h2>';
        echo '<input type="text" name="extra_data" value="' . get_extra_value($post->ID,'extra_data') . '" />';
    
    }
    
    function save_extra_data($post_id){
        $extra_data = $_POST['extra_data'];
        $column = 'extra_data';
        /*
        既に保存されているデータと比較 or $extra_dataが空の場合、で場合分けして、
        独自テーブルに対して、追加・アップデート・削除を行う処理
        */
    }
    
    function get_extra_value($post_id, $column){
        global $wpdb;
        /*
        独自テーブルから該当データを取ってくる処理
        */
    }
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタム投稿タイプで、独自のテーブルにデータを保存させるような仕組」には新たに返信することはできません。