• 解決済 Hiroki Nakashima

    (@hiroki123naka4ma)


    MW WP Formはとても使いやすいので、お気に入りのプラグインです。

    今回、MW WP Formの問い合わせデータを使って、別のカスタム投稿に投稿を作成したいと思いました。
    フォームはあらかじめ作成済みで、変更はないものとして、
    フォームで入力された内容をそれぞれカスタムフィールドとして入力するカスタム投稿を作りたいです。

    `
    <?php

    class ContactManager
    {
    public function __construct()
    {
    add_action(‘save_post’, array( $this, ‘save_contact_manager_posts’), 10, 1);
    }

    public function save_contact_manager_posts( $post )
    {
    global $post_type;
    $MWF_post_type = ‘mwf_123’;

    if ( $post_type === $MWF_post_type )
    {
    $new_post = array(
    ‘post_type’ => ‘contact_manager’,
    ‘post_status’ => ‘publish’,
    ‘post_title’ => get_post_meta( $post->ID, ‘お名前’, true ),
    ‘post_author’ => 1
    );
    $post_id = wp_insert_post( $new_post, true );
    update_post_meta( $post_id, ‘お名前’, get_post_meta( $post->ID, ‘お名前’, true ) );
    update_post_meta( $post_id, ‘フリガナ’, get_post_meta( $post->ID, ‘フリガナ’, true ) );
    update_post_meta( $post_id, ‘性別’, get_post_meta( $post->ID, ‘性別’, true ) );
    update_post_meta( $post_id, ‘生年月日’, get_post_meta( $post->ID, ‘生年月日’, true ) );
    update_post_meta( $post_id, ‘メールアドレス’, get_post_meta( $post->ID, ‘メールアドレス’, true ) );
    update_post_meta( $post_id, ‘メッセージ’, get_post_meta( $post->ID, ‘メッセージ’, true ) );
    }
    }
    }
    $contact_manager_page = new ContactManager();
    `
    参照元のMWFormの問い合わせデータのpost_typeは’mwf_123’、
    新しく作成するカスタム投稿のpost_typeは’contact_manager’、
    ‘お名前’、’フリガナ’、’性別’、’生年月日’、’メールアドレス’、’メッセージ’はそれぞれ、フォームのnameで、投稿のカスタムフィールドとして保存したいです。
    PHPでfunctions.phpのクラス内に上記のコードを追加してみたのですが、うまく機能しません。

    どこか間違っているところや、こうした方がもっと良いなどのアドバイスをいただけませんでしょうか。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • コードは<code>を押してバッククォートで囲って入力してください。

    メッセージをデータベースに保存してそこから取り出してカスタム投稿のページを作る算段でしょうか?
    ‘save_post’は上手く使わないと無限ループになって延々とページを作り続けるので注意してください。

    フォームから送信する内容を取得した方が簡単です。

    function save_contact_manager_posts() {
    $new_post = array(
    	'post_type'   => 'contact_manager',
    	'post_status' => 'publish',
    	'post_title'  => $_POST['お名前'],
    	'post_author' => 1
    );
    $post_id = wp_insert_post( $new_post, true );
    update_post_meta( $post_id, 'お名前', $_POST['お名前'] );
    update_post_meta( $post_id, 'フリガナ', $_POST['フリガナ'] );
    update_post_meta( $post_id, '性別', $_POST['性別'] );
    update_post_meta( $post_id, '生年月日', $_POST['生年月日'] );
    update_post_meta( $post_id, 'メールアドレス', $_POST['メールアドレス'] );
    update_post_meta( $post_id, 'メッセージ', $_POST['メッセージ'] );
    }
    add_filter( 'mwform_before_send_admin_mail_mw-wp-form-123', 'save_contact_manager_posts' );
    トピック投稿者 Hiroki Nakashima

    (@hiroki123naka4ma)

    ありがとうございます!
    確かに’save_post’の無限ループにも苦戦しておりました。

    フォームから送信内容を取得するほうが簡単なのですね。
    アクションフック/フィルターフックの名前が分からず、行き詰まってましたが、
    教えていただいたコードで無事に解決できました!
    ありがとうございます!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「MW WP Formの問い合わせデータを元に新規でカスタム投稿を作成」には新たに返信することはできません。