blog.hekt.org

ページの公開・編集・削除ができない

WordPress 2.5.1 にアップグレードして、いくつかの問題が生じています。たとえば、アーカイブページの一覧表示ができなかったり。

それを正そうと思ったのですが、なぜか「このページの編集は許可されていません。」というエラーが。なら削除してもう一度作り直そうと思っても、削除する権限もないんだとか。じゃあもうほかの名前で作ればいいやと思ったら、今度は公開できず。どうしようもないのでググったら、同じような問題に関する記事があった(wp_config.php のくだりに親近感!)ので、掲載されているコードを wp_user_roles にコピペ(全角文字は半角に直したよ)したものの、何もかわらず。

ダメ元でもうひとつユーザーアカウントを作って、権限を「管理人」や「編集者」に昇格させてみるも、やっぱりダメ。

もしかして前回の my_cap.php が悪さしたんだろうかと思ったものの、コードを見てみると、どうやらさっき修正した wp_user_roles しか弄ってない模様。

もうだめぽ、とあきらめつつも最後のよりどころとして 2ch 某スレに質問したところ、新規インストールしてそれをコピペすればいいよ、というようなアドバイスをいただきました。で、そこで気づくのですが、僕がずっと操作していたデータベースは、いまは使っていない古いものなのでした。なんでこんなミスが生じたかというと、データベースの操作に使っていたツールをインストールしたのが、一度まっさらにしたとき以前だったんですね。そのときの設定のままで使ってしまっていたわけです。

つまり、犯人はやっぱり my_cap.php で、wp_user_roles を修正したと思っても修正できていなかった、と。それならば正しいデータベースにさっきのをコピペすれば、と思ったのですが、これもダメで、結局素直に新規インストールしてコピペしたところ、うまく動いてくれました。

で、最初のアーカイブページの問題は、あれこれ弄っても Exec-PHP が動いてくれなかったので、runPHP というプラグインに変更しました。

補足。どうせならこの記事でコピーしたコードを残しておいたほうが有意義だと思ってもう一度 wp_user_roles を見に行って気づいたのですが、コピーしたときにはなかった runPHP に関するコードが追加されていました。おそらく、Exec-PHP が動かなかったのは、それに関するコードが wp_user_roles になかったことが原因だったんだと思います。再インストールしてもダメだったのは、一度インストールしたことがあることがどこかに記録されていたから?