set_post_type()


WordPressのset_post_type()関数は、指定された投稿の投稿タイプを変更するために使用されます。この関数は、投稿のタイプを動的に変更する必要がある場合に便利です。

構文

set_post_type( int|WP_Post $post, string $post_type );

引数の説明:

  • $post (int|WP_Post) — 投稿IDまたはWP_Postオブジェクト。
  • $post_type (string) — 設定する投稿タイプの名前。

例1: 投稿タイプを「page」に変更

この例では、指定された投稿のタイプを「page」に変更します。

<?php set_post_type( get_the_ID(), 'page' ); ?>

例2: カスタム投稿タイプに変更

この例では、投稿タイプをカスタム投稿タイプ「product」に変更します。

<?php set_post_type( get_the_ID(), 'product' ); ?>

例3: 特定の投稿を「post」タイプに変更

この例では、IDが456の投稿を「post」タイプに変更します。

<?php set_post_type( 456, 'post' ); ?>

例4: 現在の投稿タイプを取得して変更

この例では、現在の投稿タイプを取得し、それを「news」に変更します。

<?php $current_post_type = get_post_type( get_the_ID() ); set_post_type( get_the_ID(), 'news' ); ?>

例5: 投稿タイプを「attachment」に変更

この例では、投稿タイプを「attachment」に変更します。

<?php set_post_type( get_the_ID(), 'attachment' ); ?>

例6: カスタムフィールドに基づいて投稿タイプを変更

この例では、カスタムフィールドの値に基づいて投稿タイプを変更します。

<?php $custom_field = get_post_meta( get_the_ID(), 'custom_type', true ); if ( $custom_field ) { set_post_type( get_the_ID(), $custom_field ); } ?>

例7: 複数の投稿タイプを一括変更

この例では、複数の投稿のタイプを一括で変更します。

<?php $posts = get_posts( array( 'numberposts' => 5 ) ); foreach ( $posts as $post ) { set_post_type( $post->ID, 'event' ); } ?>

例8: 投稿タイプを「revision」に変更

この例では、投稿タイプを「revision」に変更します。

<?php set_post_type( get_the_ID(), 'revision' ); ?>

注意点

  • 投稿タイプを変更する際は、そのタイプが正しく登録されていることを確認してください。
  • 投稿タイプを変更すると、その投稿の表示方法や機能が変わる可能性があります。
  • 変更前にデータのバックアップを取ることを推奨します。

関連機能: