▽1
●
rouge_2008 ●200ポイント ベストアンサー |
WordPressのルートディレクトリに、以下のコードを記述したphpを配置し、フォームのアクションに指定するといいです。
(フォームは固定ページとして作成すればいいと思いますが、専用のページテンプレートに記述した方が良さそうです。
固定ページの本文に記述しても動作はしますが、WordPressの標準機能で意図しない箇所に勝手にbrが追加されていたので・・・)
<?php // どちらをロードしても大丈夫でしたが、ドキュメントで紹介されているのはwp-blog-header.phpでした。 // http://codex.wordpress.org/Integrating_WordPress_with_Your_Website require('./wp-blog-header.php'); //require('./wp-load.php'); if(!empty($_POST)) { // フォームに合わせて、それぞれ任意の変数名・項目数にしてください。 // この例では、投稿本文、投稿タイトル、投稿のタグ、投稿者名、映画、本になっています。(投稿者名、映画、本は、カスタムフィールドとして追加します。) $content = esc_html($_POST['content']); $title = esc_html($_POST['title']); $tags = esc_html($_POST['tag']); $author = esc_html($_POST['post_author']); $movie = esc_html($_POST['movie']); $book = esc_html($_POST['book']); $post = array( //'ID' => [ <投稿 ID> ], // 既存の投稿を更新する場合。 //"menu_order" => "0", // 追加する投稿が固定ページの場合、ページの並び順を番号で指定できます。 "comment_status" => "open", // 'closed' はコメントを閉じます。 "ping_status" => "open", // 'closed' はピンバック/トラックバックをオフにします。 //"pinged" => "", // ピンバック済。 "post_author" => "1", // 作成者のユーザー ID。 //'post_category' => $category, // カテゴリーを追加。 "post_content" => $content, // 投稿の全文。 //"post_date" => $postdate, // 投稿の作成日時。 //"post_date_gmt" => $postdate_gmt, // 投稿の作成日時(GMT)。 //"post_excerpt" => "", // 投稿の抜粋。 //"post_name" => "", // 投稿スラッグ。 //"post_parent" => "", // 親投稿の ID。 //"post_password" => "", // 投稿の閲覧時にパスワードが必要になります。 "post_status" => "publish", // 公開ステータス。 "post_title" => $title, // 投稿のタイトル。 "post_type" => "post", // 投稿タイプ名。 'tags_input' => $tags, // 投稿タグ。 //"to_ping" => " ", //? (PINGするかしないか?) //"post_modified" => " ", //"post_modified_gmt" => " ", //"post_content_filtered" => " ", //"guid" => " ", //"post_mime_type" => " ", //"comment_count" => "0" ); $post_id = wp_insert_post($post); if($post_id != '0') { add_post_meta($post_id, 'mcf_author', $author); // 任意のカスタムフィールド名に変更してください。 add_post_meta($post_id, 'mcf_movie', $movie); // 任意のカスタムフィールド名に変更してください。 add_post_meta($post_id, 'mcf_book', $book); // 任意のカスタムフィールド名に変更してください。 } } header('Location: http://example.jp/thanks'); // 事前に作成しておいたサンクスページに遷移させます。 ?>
まず先に「wp_insert_post()」で記事IDを取得し、取得したIDで「add_post_meta()」を実行して、カスタムフィールドを追加する流れになっています。
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_insert_post
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/add_post_meta
・ページテンプレートについて
http://wpdocs.sourceforge.jp/Pages#Page_Templates