日本語版も出ていたのでアップグレードした。
さくらインターネットスタンダードプランなのでshellでやる
参考:WordPress のアップグレード - WordPress Codex 日本語版
プラグイン全停止してから
mkdir ~/tmp
cd ~/tmp
wget http://ja.wordpress.org/wordpress-2.7-ja.zip
unzip wordpress-2.7-ja.zip
cp -R ~/www/blog/ ~/tmp/blog-backup
rm -rf ~/www/blog/wp-admin/
rm -rf ~/www/blog/wp-includes/
cp -R ~/tmp/wordpress/ ~/www/blog/
一応バックアップして、wp-admin, wp-includeを削除してから上書き。
wp-adminにアクセスするとDBがupdateされる。
プラグインを有効化。Akismet, brBrbr, Ktai Entry, WP Multibyte Patch, WPtouch iPhone Theme
テーマエディタで、タイトルが「記事名 blog名」になってるのが気に入らないので「blog名 記事名」に直す
header.phpを
<title><?php bloginfo(’name’); ?><?php wp_title(); ?></title>
しばらく様子みてから
rm -rf ~/tmp/blog-backup
未分類
Tech, wordpress, さくら
今年の春にSFCで動かしていたMovableType3.2が調子悪くなって、さくらに置いたWordPressに移行したわけだけど(さくらレンタルサーバ+wordpressにしてみた)
その時に過去ページのいくつかが見えなくなる不具合があった。んで今朝からそれを解消するスクリプトを動かしている。今1000件目あたり。昼過ぎには完了するはず。
どういう不具合かというと、wordpressにログインしていない人がアクセスしたページは404ステータスになる。apacheが吐く404ではなくwordpressが吐く404で、「エラー 404 - 見つかりませんでした」と出る。ログインしていると普通に記事を見る事が出来る。
このせいで、俺は見れているのにURLを送ると「記事がないですよ」とみんなに言われて、原因を特定するのに時間がかかった。
そしてその修正方法だが、単に個別記事編集画面で「保存」を押すだけでその記事は復活した。なぜだかわからない。
さくらのコントロールパネルからMySQLのテーブルを見ても、どのテーブルが悪さしているのかよく分からなかったのでRubyのWWW::Mechanizeを使って全ページ「保存」ボタンを押しなおす事にした。
WWW::Mechanizeはログインフォームにパスワードを入れたり、UserAgentを偽装してwebページにアクセスしたりできる非常に有用なモジュール。Perlでは使った事あったけどRubyでは今回が初。
参考
必要なものをインストール
sudo gem install mechanize hpricot
普通にwp-login.phpからログインしてdashboardへ行き、cookieを持った状態で各記事個別ページへ移動して保存ボタンを押していく。記事個別ページが連番で助かった。あと自分のサーバをいじめたくないのでsleepは長めにしてある
shokai-blogfix.rb として保存
#!/usr/bin/env ruby
require ’rubygems’
require ’kconv’
require ’mechanize’
require ’pp’
user = ”username”
pass = ”password”
puts ’start’
agent = WWW::Mechanize.new
page = agent.get(”http://shokai.org/blog/wp-login.php”)
login_form = page.forms_with(”loginform”).first
login_form.log = user
login_form.pwd = pass
dashboard = agent.submit(login_form)
puts ”login: ” + dashboard.title
# 各ページ処理
for i in 1..1558
sleep 10
begin
page = agent.get(”http://shokai.org/blog/wp-admin/post.php?action=edit&post=#{i}”)
post_form = page.forms_with(”post”).first
page = agent.submit(post_form)
puts i.to_s+”success!” if page.body =~ /投稿が更新されました/
rescue
puts i.to_s+”error”
end
end
puts ’–finished–’
パスワードなどは適宜変更。
URLもハードコーディングしている。1回しか使わないスクリプトだし
未分類
Ruby, wordpress, WWW::Mechanize
素のwordpressだと、ctrl+dで文字を消そうとするとdelタグが挿入されたり、ctrl+aでアンカータグが入ったりする。
wp-includes/js/quicktags.jsとかをいじってうまくいったと思ったら、ctrl+Pはquicktags.jsと別の所で定義されていた。カーソル上に移動させようとしたら「公開」されてしまった。
Firefoxの設定でやる方が良い
retlet.net - VimperatorのキーバインドとバッティングするのでFirefoxのaccesskeyを無効化
about:configでui.key.generalAccessKey = 0にする。
未分類
Firefox, wordpress
何行改行しても、空行が1行しか入らなくて困っていた。
CamCam » Wordpress 改行プラグインを使う
ダウンロードして解凍してプラグインディレクトリに設置、ダッシュボードで有効にする
wget http://camcam.info/wps/wp-content/uploads/2007/02/brbrbrphp.zip
unzip brbrbrphp.zip
mv brBrbr.php ~/www/blog/wp-content/plugins/
大変ありがたい。
preタグ内の改行が2つになってしまうのはしょうがないか
未分類
wordpress
最初からwordpressに入ってるwp-mailは日本語や写真添付が駄目なので、春頃からwp-shotというのを使ってたんだけど同作者さんがKtai Entryを出てるのに気づいた。
ふつうcronで定期的にメールサーバにチェックしにいって新着メールがあったら読み出してblog更新するのに、「~分おきに更新」という設定項目がwordpressの管理画面に出てたのでどうやってるのかと思ったら
blog自体のアクセス毎にメールチェックしにいってたのね。これならcronたしかに要らないなあ
最後にメールチェックした時刻を覚えておいて、例えば10分たってたら再チェックするらしい。
さくらのサーバだとcronでphpを実行させられなくて、 /usr/local/bin/wget -–spider http://~~~~~.php とかわざわざhttp経由でphpを起動させないと駄目だったので設定が楽になって良いです。
未分類
wordpress
wordpress用のiPhone/iPodTouch用プラグイン WPtouchを入れた

ダウンロードしたアーカイブを解凍して、wp-content/plugins以下に配置して管理画面からプラグインを「使用する」にチェック入れるだけで動いた。
useragentを見て表示をiPhone/iPodTouch用に切り替えてるので、専用URLが生成されるのではないので良い。
未分類
iPhone, wordpress
wp-shotはWordPressに最初から入っているwp-mail.phpが強化された感じのプラグイン。POPでメールアカウントにアクセスして、新着メールを記事として投稿するのは同じだけど、さらに添付した画像をimgタグで表示する機能が付いてる。
wp-shotをダウンロードしてきて解凍、wp-content/pluginsのフォルダ下に置く。
wp-shotフォルダは何か適当に名前を変えた方がいい。
dashboardでプラグインを有効化する
設定は、wp-mail.phpと同じ設定を読み込んでいる。
dashboardで、設定→投稿設定→メールでの投稿 から設定できる。
10分おきに動作するようにcronを登録する。
crontab -e*/10 * * * * /usr/local/bin/php /home/shlog/www/blog/wp-content/plugins/wp-shot/wp-shot.php
crontab -l
で登録されているのを確認しておわり。
未分類
cron, Tech, wordpress
sfcのcnsで動かしていたMovableTypeが、SQLiteに書き込めなくなった(読み出しはできる)ので、さくらインターネット|WordPress インストールガイドを見てやってみた。といってもさくらのコンパネからMySQLのパスワードだけ設定しつつMySQLが動いているサーバの名前をチェックし、wordpressをDLしてきて、さくらスタンダードプランに置いて、なにもせずアクセスするだけですぐ動いてしまった。
MTでデータをexportして、WordPressでimportする時に、特定のエントリで止まる事があった。1件の大量のAmazonへのリンクがあるエントリを除いて全てmoblogだった。
exportされたデータはテキストファイルだったので、とりあえずその記事を削除して何度もトライして一応ほとんどのエントリが移行できたはず。
未分類
wordpress
最近のコメント