私は私のWordPressインストールの一つに複数の著者アカウントを持っています。私はしばしば投稿を作成し、作者を別のアカウントに設定します。ただし、その投稿に画像をアップロードすると、その添付ファイルのページに作成者が私のアカウントとして表示されます。投稿者を投稿者に設定して、その投稿に関連するメディアに引き継ぐにはどうすればよいですか。
あなたのテーマのfunctions.php
でこれを使ってください:
add_filter( 'add_attachment', 'wpse_55801_attachment_author' );
function wpse_55801_attachment_author( $attachment_ID )
{
$attach = get_post( $attachment_ID );
$parent = get_post( $attach->post_parent );
$the_post = array();
$the_post['ID'] = $attachment_ID;
$the_post['post_author'] = $parent->post_author;
wp_update_post( $the_post );
}
添付の投稿日も投稿の親の日付に変更するように@brasofiloの上記の解決策を拡張しました。
また、添付ファイルのアップロード時だけでなく、添付ファイルが編集されたときも同様です。これと同じ関数でedit_attachment
フィルターを使用できます。しかし、そうすると、wp_update_post
関数が無限ループを引き起こし、PHPメモリエラーが発生するため、多くの検索の結果、困難な方法を見つけました。この無限ループに対する警告は、実際には Codex に記載されています。
解決策は、以下のようにフィルタを削除することです。
function wpse_55801_attachment_author( $attachment_ID ) {
remove_filter('add_attachment', 'wpse_55801_attachment_author');
remove_filter('edit_attachment', 'wpse_55801_attachment_author');
$attach = get_post( $attachment_ID );
$parent = get_post( $attach->post_parent );
$the_post = array();
$the_post['ID'] = $attachment_ID;
$the_post['post_author'] = $parent->post_author;
$the_post['post_date'] = $parent->post_date;
wp_update_post( $the_post );
add_filter( 'add_attachment', 'wpse_55801_attachment_author' );
add_filter( 'edit_attachment', 'wpse_55801_attachment_author' );
}
add_filter( 'add_attachment', 'wpse_55801_attachment_author' );
add_filter( 'edit_attachment', 'wpse_55801_attachment_author' );