web-dev-qa-db-ja.com

管理ユーザーにコンテンツを割り当てないでください

セキュリティ上の理由から、コンテンツが自分のWebサイトの管理ユーザーに起因していないことを確認したいと思います。

基本的に、コンテンツの作成者を自動的に別のもの(アップロードを含む)に変更する方法が必要です。

管理者として、ユーザーを削除すると、WordPressから、すべてのユーザーのコンテンツを削除するのか、それとも別のユーザーに再配布するのかを尋ねられます。

さて、私は自動的に与えられたユーザー(管理者ユーザー)から他のユーザー(作成者/編集者)にコンテンツの作成者を変更したいです。

これを達成するにはどうすればよいですか(通常、サイトをホストしているサーバーへのルートレベルのアクセス権があります)。

1
adam-asdf

投稿が公開または更新されたときはいつでも、投稿者が管理者であるかどうかを確認するためのチェックがあるように、投稿ステータスの遷移にフックします。もしそうなら、作者を管理者以外に更新してください。まず、作成者として設定したい管理者以外のユーザーのIDを取得します。

// change author ID to suit your needs
$newAuthor = 3;
// hook our function to fire when any post type's status changes
add_action('transition_post_status', 'wpse_change_author', 10, 3);
function wpse_change_author($new_status, $old_status, $post) {
    // only adjust published posts - which are either new or newly updated
    if($new_status == 'publish') {
        // check whether author is admin
        if(user_can($post->post_author, 'administrator')) {
            // update the post with new author ID
            wp_update_post(array('ID' => $post->ID, 'post_author' => $newAuthor));
        }
    }
}
2
WebElaine