質問: あるプラグインによって自動生成されるカスタム投稿タイプがあります。 ここではカスタム投稿と言っても、「All in One SEO Pack」のようにカスタム投稿タイプは生成されても個別の記事はフロントに表示されないものです。 そこで、その自動生成された投稿タイプのデータベースを元に、別の投稿タイプにそのポストデータの一部を複製して作成することは出来ないかと考えたのですが、やり方が分からず困っています。 具体的なコードで教えていただけますと助かります。 【実現したいこと】 カスタム投稿タイプABCのポストデータを元に、 カスタム投稿タイプDEFの投稿を自動的に作成して保存する。 post-type "DEF"の投稿作成のタイミングは、post-type "ABC"のデータが新しく追加されたとき。 post-type "ABC"から引き継ぎたいのは、 「タイトル」「作成日時」「作成者」「カスタムフィールド」。 ーーー 初心者であまり良くわかってないのですが、コードはテーマのfunctions.phpにインクルードするクラスファイルに記述するのかなと思ってます。 よろしくお願いいたします。
回答: > > ここではカスタム投稿と言っても、「All in One SEO Pack」のようにカスタム投稿タイプは生成されても個別の記事はフロントに表示されないものです。 > > > All in One SEO Packの設定はカスタム投稿タイプではないです。 カスタム投稿タイプはpost_typeを持つデータであって、そのプラグインはpost_typeを持ちません。 > > カスタム投稿タイプABCのポストデータを元に、 > > カスタム投稿タイプDEFの投稿を自動的に作成して保存する。 > > > 状況が分からないので新規投稿しか考慮しておらず下書きにすると動きません。 投稿ステータスの遷移 ``` function copy_post( $post ) { global $post_type; if( $post_type === 'ABC' ) { $date = array( 'post_type' => 'DEF', 'post_status' => 'publish', 'post_title' => $post->post_title, 'post_author' => $post->post_author, 'post_date' => $post->post_date ); $post_id = wp_insert_post( $date ); add_post_meta( $post_id, $_POST['metakeyinput'], $_POST['metavalue'] ); } } add_action( 'auto-draft_to_publish', 'copy_post' ); ```