カスタム投稿(ポスト)タイプの投稿にファイルを挿入したら

カスタム投稿(ポスト)タイプの投稿にファイルを挿入してもテーブルwp_postsのpost_parentの値がセットされていなかったので調べてみました。(テーブル名のwp_は設定によります。)

post_parentがセットされてないと、get_attached_media(get_children)関数で何も取れません。

plupload – post_id missing from the wp-admin file upload request – WordPress Development Stack Exchange

とりあえず対処方法は見つかりました。

下記のコードをfunctions.phpに貼り付けると、ファイルを投稿にドラッグ&ドロップした時点、または「メディアを追加」からファイルをアップロードした時点でpost_parentがセットされる様になります。

セットはされますが、投稿から挿入したファイルの記述を削除しても、またはアップロード済みのファイルを投稿に挿入しても、そのファイルのpost_parentの値が書き換わることは当然ありませんので、その辺りは運用で……

function wp_plupload_include_attachment_id( $params ) {
  global $post_ID;
  if ( isset( $post_ID ) )
    $params['post_id'] = (int) $post_ID;
  return $params;
}
add_filter( 'plupload_default_params', 'wp_plupload_include_attachment_id' );