WordPress の管理者権限

WordPress の管理者権限について調べてみました。

WordPress 1.0 系の初期の頃には、User Levels というもので権限管理を行っていたようです。しかし、柔軟性がないなどで今(最新版は 3.8.1)は、ロールとケイパビリティというもので管理を行っているようです。

ロール(role)

ロールというのは、

特権管理者
管理者
編集者
投稿者
寄稿者
購読者

などというユーザーに対して割り当てることのできるものです。割り当てられたロール(役割)によって管理画面で行えることが限られてきます。

ケイパビリティ(capability)

ケイパビリティというのは、これはある操作を実行する権限を表していて、ロールに対して割り当てることができるものです。

例えば “購読者” というロールは “read” というケイパビリティを持っています。
read というケイパビリティは管理画面のダッシュボードとユーザーのプロフィールを閲覧することのできる権限です。
なので “購読者” は管理画面で ダッシュボードと自分のプロフィールを閲覧することができます。逆にいいますと、それしかできません。

投稿者になると、投稿に必要なケイパビリティは一通り持っています。

記事の削除(delete_posts, delete_published_posts)
記事の編集(edit_posts, edit_published_posts)
記事の公開(publish_posts)
ダッシュボードとプロフィールの閲覧(read)
ファイルのアップロード(upload_files)

まとめ

WordPress の権限管理はロールとケイパビリティというものを使用して、ケイパビリティという単位で権限をロールに対して割り当てて、そのロールのユーザーを作成することで権限管理をおこなっています。

WordPress の手動アップデート

WordPress のアップデートを行ってみます

以下のバージョンで確認
3.6.1 → 3.7.1
3.7.1 → 3.8 (3.8 で管理画面がフラットなデザインになりましたね!)

※作業中はサイトが利用できなくなるのでメンテナンス中等という表示を行った方が良いと思います

http://weble.org/2011/04/01/wordpress-manual-upgrade
このサイトのままなのですが、コマンドラインから行えるように軽く書いていきます

データベースのバックアップ

まず初めに全てのデータベースをバックアップします。

mysqldump --add-drop-table -u ユーザー名 データベース名 --single-transaction -p > dump.sql

–add-drop-table
テーブルデータの破棄クエリをダンプするファイルに挿入するオプション
復元する時に便利ですね

–single-transaction

このオプションだとテーブルをロックせず、トランザクションの範囲でバックアップしてくれるとのことだった。

http://php.tekmemo.com/?p=1388
Got error: 1044: Access denied for user 'ユーザー名@...' to database 'データベース名' when using LOCK TABLES

というエラーが出た場合に必要になります。検証してはないのですがテーブルをロック出来る権限を持っていないユーザーでバックアップを取ろうとすると発生するかもしれません(未検証)

プラグインの一括停止

WordPressの管理画面から一括停止を行う

WordPress のダウンロード

http://wordpress.org/
から最新版をダウンロードする

wget http://wordpress.org/latest.zip

※これは英語版になります

解凍して既存の wordpress を上書きする

unzip latest.zip
mv wordpress /var/www/html/wordpress_new

上書きするのは wp-content wp-config.php 以外の全てです。(日本語版だと wp-content/languages も必要?)

cd /var/www/html/
cp -r wordpress/wp-content wordpress_new/
cp -r wordpress/wp-config.php wordpress_new/
mv wordpress wordpress_old
mv wordpress_new wordpress

これで wp-content, wp-config.php 以外のファイルを上書きしたことになります。
(もっと簡潔に出来るといいのですが…)

ブラウザからサイトへアクセスしてデータベースを更新する

管理画面からプラグインを有効化

これで更新完了です

WordPress のプラグインを手動インストール

ここでは crazy-bone 0.5.2 を導入してみる

ダウンロードしてきた zip を解凍する
http://wordpress.org/plugins/crazy-bone/

unzip crazy-bone.0.5.2.zip

crazy-bone というフォルダができるのでそのまま WordPress の wp-content/plugins/ 以下に移動する

mv crazy-bone /var/www/html/wordpress/wp-content/plugins

※パスは一般的と思う場所になります

WordPress の管理画面へアクセスして crazy-bone のプラグインを有効化

以上で完了です。