ウギッ, .htaccess のドットが一個落ちてたぜ。

 今年も,ボチボチ蛍の季節が来るなぁ,とか思いながら,去年はいつ頃だったっけ,と我がブログを調べてたんだが……。去年の記事上のビデオが見れないじゃん。えっ,どうしてよ。

 それについては,タグを <object> から <video> にして見えるようになったんだが,よく調べたら, flv ファイルが全部ロードされないみたい。どうなっとんの?

 えっと, flv の不具合については,常々 BPS を疑うことにしている,アヘッ。で,案の定 .htaccess で,ドットが 1 つ落ちてましてん。 flvplayer\.swf としなくてはいけないのに, flvplayer\swf になってた。ウグッ!

 てなわけで, flv は,無事ロードされるようになりましたとさ。オソマツ。

WordPress 上で utf8mb4 を使う話。

 昨日,WordPress 4.2 がやってきた。 WordPress の Updates ページから更新したが,我が家は,マルチサイトタイプなので,その後, Upgrade Network が必要である。うちの SSL は自前認証局を使っているので, Upgrade Network をやる前に, wp-includes/certificates/ca-bundle.crt に自前 CA のデータを書き加えてやっておかないといけない。同様に下記の 2 行も wp-includes/class-http.php に加えてやる必要がある。これは,クライアント認証をクリアするためね。

  • curl_setopt( $handle, CURLOPT_SSLCERT, 'clientcert.pem の絶対パス' );
    curl_setopt( $handle, CURLOPT_SSLKEY, 'clientkey.pem の絶対パス' );

 この辺の話は,必要なら「WordPressでの「SSL3_READ_BYTES:sslv3 alert handshake failure」を解決。」を参照してください。

 ところで, WordPress 4.2 によると, WordPress は utf8mb4 をサポートするようになったようだ。ということで, JIS X 0213 の第 3 ・ 4 水準漢字の 4-byte になる下記の文字も記事内で使えることになった。ということは,いろんな絵文字も使えるわけだ。
 実は, 2013‎.5‎.22 に,この件やってみたんだけど,記事内では下記の文字は表示できなかった覚えがある。いや,スンバらしい。
𠀋 𡈽 𡌛 𡑮 𡢽 𠮟 𡚴 𡸴 𣇄 𣗄 𣜿 𣝣 𣳾 𤟱 𥒎 𥔎 𥝱 𥧄 𥶡 𦫿 𦹀 𧃴 𧚄 𨉷 𨏍 𪆐 𠂉 𠂢 𠂤 𠆢 𠈓 𠌫 𠎁 𠍱 𠏹 𠑊 𠔉 𠗖 𠘨 𠝏 𠠇 𠠺 𠢹 𠥼 𠦝 𠫓 𠬝 𠵅 𠷡 𠺕 𠹭 𠹤 𠽟 𡈁 𡉕 𡉻 𡉴 𡋤 𡋗 𡋽 𡌶 𡍄 𡏄 𡑭 𡗗 𦰩 𡙇 𡜆 𡝂 𡧃 𡱖 𡴭 𡵅 𡵸 𡵢 𡶡 𡶜 𡶒 𡶷 𡷠 𡸳 𡼞 𡽶 𡿺 𢅻 𢌞 𢎭 𢛳 𢡛 𢢫 𢦏 𢪸 𢭏 𢭐 𢭆 𢰝 𢮦 𢰤 𢷡 𣇃 𣇵 𣆶 𣍲 𣏓 𣏒 𣏐 𣏤 𣏕 𣏚 𣏟 𣑊 𣑑 𣑋 𣑥 𣓤 𣕚 𣖔 𣘹 𣙇 𣘸 𣘺 𣜜 𣜌 𣝤 𣟿 𣟧 𣠤 𣠽 𣪘 𣱿 𣴀 𣵀 𣷺 𣷹 𣷓 𣽾 𤂖 𤄃 𤇆 𤇾 𤎼 𤘩 𤚥 𤢖 𤩍 𤭖 𤭯 𤰖 𤴔 𤸎 𤸷 𤹪 𤺋 𥁊 𥁕 𥄢 𥆩 𥇥 𥇍 𥈞 𥉌 𥐮 𥓙 𥖧 𥞩 𥞴 𥧔 𥫤 𥫣 𥫱 𥮲 𥱋 𥱤 𥸮 𥹖 𥹥 𥹢 𥻘 𥻂 𥻨 𥼣 𥽜 𥿠 𥿔 𦀌 𥿻 𦀗 𦁠 𦃭 𦉰 𦊆 𦍌 𣴎 𦐂 𦙾 𦚰 𦜝 𦣝 𦣪 𦥑 𦥯 𦧝 𦨞 𦩘 𦪌 𦪷 𦱳 𦳝 𦹥 𦾔 𦿸 𦿶 𦿷 𧄍 𧄹 𧏛 𧏚 𧏾 𧐐 𧑉 𧘕 𧘔 𧘱 𧚓 𧜎 𧜣 𧝒 𧦅 𧪄 𧮳 𧮾 𧯇 𧲸 𧶠 𧸐 𧾷 𨂊 𨂻 𨊂 𨋳 𨐌 𨑕 𨕫 𨗈 𨗉 𨛗 𨛺 𨥉 𨥆 𨥫 𨦇 𨦈 𨦺 𨦻 𨨞 𨨩 𨩱 𨩃 𨪙 𨫍 𨫤 𨫝 𨯁 𨯯 𨴐 𨵱 𨷻 𨸟 𨸶 𨺉 𨻫 𨼲 𨿸 𩊠 𩊱 𩒐 𩗏 𩙿 𩛰 𩜙 𩝐 𩣆 𩩲 𩷛 𩸽 𩸕 𩺊 𩹉 𩻄 𩻩 𩻛 𩿎 𪀯 𪀚 𪃹 𪂂 𢈘 𪎌 𪐷 𪗱 𪘂 𪘚 𪚲

 ということで,「私,𩸽の開きを焼いたのが大好きなのよ」なんちゅうこともブログにかけるわけだ。ハハ。おっと,書き忘れるところだった。もちろんだけど, SQL Server の utf8mb4 サポートは当然ながら,必須ダヨ。

覚え書-#23。

 いくつかのサーバソフトをアップデートした (OS は Win7 HP SP1 x86)。

  • MariaDB 10.0.16 —->> MariaDB 10.0.17 (Changelog)
  • PHP 5.6.7 —->> PHP 5.6.8 (Changelog)
    注) <php_root> 直下に lib というディレクトリが増えた。 bug #65406 の関連。
  • phpMyAdmin 4.3.10 —->> phpMyAdmin 4.4.3 (Changelog)
    注) config.sample.inc.php から下記の行が削除されていた。

    • * default display direction (horizontal|vertical|horizontalflipped)
      */
      //$cfg[‘DefaultDisplay’] = ‘vertical’;
      /**
  • ActivePerl 5.20.1.2000 —->> ActivePerl 5.20.2.2001
  • WordPress 4.1.1 —->> WordPress 4.1.2
    注) このアップデートは自動で行われた。

初めての VPS-#4 (CentOS7 上に WordPress のインストール)。

 さくらの VPS のお試し期間は, 12/2 までだったのだが,まだやりたいことを残しているので,続けて使っている。月払いで,しばらく続けてみるつもりである。

 今回は,「WordPress のインストール」について書く。試される場合は,当然ながら,前もって,初めての VPS #1初めての VPS #2初めての VPS #3 は完了していないといけないです。まずは Wheel Group User (うちの場合は centos )として―言い換えると root 権限のユーザということ―インストールする。

注)||SELinux と WordPress||httpd_selinux(8) 参照)

  1. ダッシュボードからプラグインをインストールしようとしたら,「FTP サーバー VPS_DomainName への接続に失敗しました」が出た。 Http デーモンがネットワークにアクセスできないせいらしい。解決策は, “httpd_can_network_connect –> on”。
    $ sudo setsebool -P httpd_can_network_connect on
  2. ダッシュボードからメディアファイルをアップロードしようとしたら,「ディレクトリ wp-content/uploads/year/date を作成できませんでした。この親ディレクトリのアクセス権はサーバーによる書き込みを許可していますか?」が出た。親ディレクトリのパーミッションは 707 だったんだけとさ。 Httpd デーモンが context のせいで,ディレクトリの読み書きができないらしい。 context を ‘httpd_user_content_t’ から ‘httpd_sys_rw_content_t’ に変えたら,できるようになった。しかし,別の問題が発生。 FTP クライアントから見えない。メディアファイルに関しても FTP クライアント経由でバックアップすることが多い私には,これは問題である。
     
    解決策を探してみた。
    context を ‘httpd_sys_rw_content_t’ ではなく, ‘public_content_rw_t’ にする。メディアをアップロードするためには, ‘httpd_anon_write –> on’ も必要だった。
    $ sudo setsebool -P httpd_anon_write on
    $ sudo semanage fcontext -a -t public_content_rw_t \
    "/path/to/wp-content/uploads(/.*)?"

    $ sudo /sbin/restorecon -RF /path/to/wp-content/uploads
     
    参考 URL: 5.7.2. 永続的な変更: semanage fcontext
    上記には ‘restorecon -R’ で変更可能にと書いてあるのだが,なんでだか ‘restorecon -RF’ と F(force)を付けないとうまくいかなかった。

||Wheel Group User として WordPress をインストール||

  1. phpMyAdmin に root としてログイン。
  2. WordPress 用の database (wordpressdb とか) を照合順序 ‘utf8_general_ci’ で作成する。
  3. WordPress 用の user (wordpressuser とか) を localhost かつ passphrase ありで作成する。
    GRANT USAGE ON *.* TO wordpressuser@localhost IDENTIFIED BY PASSWORD ‘passphrase’;
     
    特権を編集する。データベース ‘wordpressdb’ について GRANT 以外のすべての特権を与える。グローバル特権は一切付与しないことに注意!!
    GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpressuser@localhost;
  4. ログアウト

——————–

  1. VPS に SSH 経由で centos としてログオン。直後は, /home/centos にいるはず。
  2. $ mkdir tmp
    $ chmod 707 tmp

    tmp はダウンロードファイル用である。

  3. $ cd tmp
     
    ‘wget’ が入っていない場合は,下記でインストール。
    $ sudo yum install wget
     
    WordPress をダウンロードし,解凍後当該個所にコピーする。
    $ wget https://ja.wordpress.org/wordpress-4.0-ja.tar.gz
    $ tar xzvf wordpress-4.0-ja.tar.gz
    $ rsync -avP ~/tmp/wordpress/ ~/www/html/wp/
  4. uploads フォルダを作成。
    $ mkdir ~/www/html/wp/wp-content/uploads
    $ chmod 707 uploads
     
    context type を変更する。
    $ sudo semanage fcontext -a -t public_content_rw_t \
    "/home/centos/www/html/wp/wp-content/uploads(/.*)?"

    $ sudo /sbin/restorecon -RF /home/centos/www/html/wp/wp-content/uploads

——————–

  1. ブラウザから, http://VPS_DomainName/wp/ にアクセスする。
  2. ブラウザからのインストール時, wp-config.php が自動生成されないので,表示される情報をもとに,テキストエディタで作成し, FTP クライアントでアップロードして,パーミッションを 404 にする。
    それ以外は,順当に進む。
     
    注)WordPress が FTP account 情報を自動取得できないようで,アップテートやプラグインインストール時に,一々入れてやらないといけないので, wp-config.php の /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ より前に下記の 3 行を追加した。
    参考 URL: WordPress Upgrade Constants
     
    define('FTP_USER', 'username');
    define('FTP_PASS', 'password');
    define('FTP_HOST', 'VPS_DomainName');

 
 この時点で, PHP は DSO (Apache 2.0 Handler) で動いている。で,上の手順後,大部分の WordPress のファイルのオーナー/グループは ‘centos:centos’ になっているが,ダッシュボードからアップロードしたメディアファイルだけは, ‘apache:apache’ である。このせいで, FTP クライアントから,メディアファイルの編集ができない。バックアップはできるんだが。まあ, ‘centos‘ としてなら, SSH 経由で ‘chown’ が使えるけどね。
 
 このことは,一般ユーザの場合に,より問題となると思う。続いて,一般ユーザとして,インストールする話を書く。
 
||一般ユーザとして WordPress をインストール||
 当然ながら,サーバサイドの作業は,一般ユーザではできない。 centos として行う。

    [サーバサイド]——

  1. centos として, SSH 経由で VPS にログインし,一般ユーザを作成。
    $ sudo adduser normuser1
    $ sudo passwd normuser1
    Changing password for user normuser1.
    New password:
    Retype new password:
    $ sudo chmod 701 /home/normuser1
  2. /etc/httpd/conf.d/userdir.conf を編集する。
    $ sudo vi /etc/httpd/conf.d/userdir.conf 参考 URL: UserDir ディレクティブ

    • UserDir disabled の次行に UserDir enabled normuser1 を追加。
    • #UserDir public_html の次行に UserDir www/html を追加。
    • <Directory "/home/*/public_html">
      —>> <Directory "/home/*/www/html">
    • Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      —>> Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
  3. $ su - normuser1
    $ mkdir www
    $ cd www
    $ mkdir html
     
    normuser1 id の属性をチェック。
    $ id -a normuser1
    uid=1001(normuser1) gid=1001(normuser1) groups=1001(normuser1)
    $ exit
    $ sudo systemctl restart httpd.service
  4. $ sudo gpasswd -a sennari apache
    normuser1 id の属性をチェック。
    $ id -a normuser1
    uid=1001(normuser1) gid=1001(normuser1) groups=1001(normuser1),48(apache)
  5. ブラウザから root として phpMyAdmin にログイン。
     
    WordPress 用の database (normuser1db とか) を照合順序 ‘utf8_general_ci’ で作成する。
    WordPress 用の user (normuser1wp とか) を localhost かつ passphrase ありで作成する。
    GRANT USAGE ON *.* TO normuser1wp@localhost IDENTIFIED BY PASSWORD ‘passphrase’;
     
    特権を編集する。データベース ‘normuser1db’ について GRANT 以外のすべての特権を与える。グローバル特権は一切付与しないことに注意!!
    GRANT ALL PRIVILEGES ON normuser1db.* TO normuser1wp@localhost;
     
    ログアウト。
    [クライアントサイド]——

  1. FTP クライアントで, normuser1 の DocumentRoot にアクセスする。
    テストとして, index.html をアップロードしてみる。ブラウザから http://VPS_DomainName/~normuser1/ にアクセスして確認。
     
    余談だが,この index.html に base64 encoded in-line image scheme を使ってみた (^^)。
  2. FTP クライアントで, DocumentRoot に wp フォルダを作成。
    解凍した WordPress のファイルを wp に FTP 経由でアップロード。
  3. ブラウザで, http://VPS_DomainName/~normuser1/wp/ にアクセスし, WordPress のインストールを続ける。
     
    ブラウザからのインストール時, wp-config.php が自動生成されないので,表示される情報をもとに,テキストエディタで作成し, FTP クライアントでアップロードして,パーミッションを 404 にする。それ以外は,順当に進んだ。
     
    注)WordPress が FTP account 情報を自動取得できないようで,アップデートやプラグインインストール時に,一々入れてやらないといけないので, wp-config.php の /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ より前に下記の 3 行を追加した。
    参考 URL: WordPress Upgrade Constants
     
    define('FTP_USER', 'username');
    define('FTP_PASS', 'password');
    define('FTP_HOST', 'VPS_DomainName');

 上記終了後, WordPress 4.0 を 4.1 にアップグレードした。問題なし。ところが, uploads フォルダは作成済みでパーミッションを 707 にしてあったにも関わらず,メディアのアップロードができなかった。そんなわけで,下記のような手直しをした。

  1. FTP クライアントで, uploads フォルダのパーミッションを 775 に変更。どうやら, Http デーモンがここにフルアクセスできないといけないようなので。
  2. 以下の 3 つは centos として SSH 経由でやった。これらは,一般ユーザの権限ではやれない。そんなわけで,複数ユーザのサイトを運営する場合,この件はとても不便ではないかと思った。何しろ, ‘fcontext -a -t’ 以外は uploads フォルダ作成後でないとできなかったから。
    • $ sudo chown -R normuser1:apache \
      /home/normuser1/www/html/wp/wp-content/uploads
    • $ sudo semanage fcontext -a -t public_content_rw_t \
      "/home/normuser1/www/html/wp/wp-content/uploads(/.*)?"
    • $ sudo restorecon -RF /home/sennari/www/html/wp/wp-content/uploads

 さて,いまひとつの疑問がある。どうして WordPress は upgrades と メディアアップロードで違う方法をとっているのだろうか。メディアについても upgrades と同じ方法でやってくれれば,こんなことは起こらないと思うのに。 PHP に詳しくないのでよくわからないが,おんなじ方法を使うとなんかまずいことがあるんかいな?
 
 そんなこんなで, suEXEC サポートに取り組んでみようかという気になっている。

覚え書-#21。

ROLIS 降下中の画像
ROLIS 降下中の画像
 みなさん,もう聞きましたか?
 
 12 日 15:35 UTC (つまり 13 日 00:35 JST) に,フィラエが,彗星に着いたってさ。すごいよなぁ。
 
 チュリュモフ・ゲラシメンコ彗星だよ。ワォ!!
 
 ところで,我がハヤブサ 2 も 11/30 打ち上げ予定だよねー。待ち遠しいな,天気がいいといいなぁ。
    メモ 1

  • 見出しNotes の見出しに Kranky を使うために,メインサイトの style.css を変更した。頭に “+” がある行を追加した。
    @import url("../sugar-and-spice/style.css");
    +@import url(https://fonts.googleapis.com/css?family=Kranky);
     
    /* Typography */
    h1, h2, h3, h4, h5, h6 {
    color: #000;
    }
    +h2 {
    + font-family: 'Kranky', cursive, Arial, sans-serif;
    + font-size: 2em;
    + margin: 0 0;
    +}
     
    変更前の CSS はこれ
     
    注)<h2> タグの関係をいじったが,うちの場合,このタグはメインサイトのほかの部分では使っていない。で,他に影響はないのだ。
  • メモ 2

  • Google Analytics by Yoast の使用をやめた。 Google アナリティクス‎ は使っているので, ID を手動で設定しなおした。
    1. ‘analyticstracking.php’ を Google アナリティクス‎のトラッキング ID ページの指示通りに作り, child theme のディレクトリにコピーする。
    2. サイトテーマの header.php を child theme のディレクトリにコピーする。
    3. 新しい headr.php を編集する。
      <body> タグの直下に, <? php include_once ("analyticstracking.php")?> を追加。
    4. 以上。
      注)データに変更が反映されるのには,しばらく時間がかかるようだ。

カールはプードル飼ってるのかな?

投稿アップデート情報  追記(10/26)

 前記事で, “POODLE” の件を書いた。その後, SSLv3 fallback attack POODLE というのを読んで, WordPress 上の cURL のことが気になりだした。

 curl_setopt( $handle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); というオプションを curl_setopt で見つけたが, WordPress Core Scripts のどこに入れるのが一番いいのかがわからない。で, WordPress Forums に topic を建ててきた。現在,回答待ちです。

追記(10/26):
 cURL が確かに TLSv1.2 を使っていることを確認できたので,さっき, topic を [resolved] にしてきた。 Apache の SSL のログに %{SSL_PROTOCOL} を入れて調べた。 class-http.php に CURL_SSLVERSION_TLSv1 on the file を入れる必要はないようだ。サーバのコンフィグがちゃんと出来てれば,クライアントは安全にアクセスできるんだね。もちろん,クライアントのソフトが TLS に対応してないとかじゃ話にならんけど。

 何はともあれ,(*´▽`*)。

ただいま日本語版待ち,WordPress 4.0。

投稿アップデート情報  追記 追記2(9/6)

 WordPress 4.0 が出た。ただし,我が家は,日本語版待ち。皆さんはいかがですか。

 昨夜, WP Multibyte Patch のアップデートも来ていたので,グローバル版 4.0 を入れるならこちらも忘れずにやっておいたほうがいいのかもしれない。この間のためしもあるし。

追記:
 くりくりさんから,「インストール時に言語選択ができるようになった」の書き込みをいただいた。これ,インストール時だけかな。 @pages ではアップグレードしてみたのだが,なにも出なかった。本家は,マルチなので,アップグレードが不安で,待っている。日本語版はどうなるんだろう。 @pages の language フォルダを見ると,一応,新しい ja.mo が上書きされてはいる。

 しかし,本家の親言語は,英語だからなあ。どうなるんだろ。グローバル版,いれてみようか,どうしよう。

追記2(9/6):

 2 時 57 分に, WordPress 4.0 日本語版にアップデートした。WordPress 4.0 における言語関連実装の変更とその注意点を読んでみると,次回からは,日本語版を待つ必要はないかなと思う。古い wp-config.php から define('WPLANG', 'ja'); を削除し,プラグイン WP Multibyte Patch については,「ネットワークで有効化」をやめて,日本語のこのブログと netradi に対してのみの有効に変更した。

 それと,次回も忘れないように,自分に強ーく言い聞かしておこう。

  1. class-http.php に 2 行追加。
  2. ca-bundle.crt に 自前の CA のデータを追加。

親サイトの自動保存がうまくいかない。

投稿アップデート情報  追記(9/6)

 いつからかは定かでないが,最近, o6asan.com での自動保存ができなくなっていた。 o6asan’s soliloquyo6asan’s soliloquy-part2 では問題なし。

 それとは別に, 29 日に php_opcache.dll がらみで, Apache のエラーログを見ていたときに多量の「WordPress database error Duplicate entry ‘0’ for key ‘PRIMARY’ for query INSERT INTO `WordPress DB table name` ~」に気づいた。

 昨日,ふとそのエラーのことを思い出して,対処してやろうと,エラーログをのぞきに行ったら, Notes 関係のものがたくさんあるということに気づいた。ここに至って,このエラーと自動保存の根が一緒だと気付いた。そんでもって,このエラーは 23 日に始まっていた。 MariaDB のアップデートのときに,何かまずいことをやらかしたに違いない (-_-;)。

 ログに含まれているテーブル名を確認したところ, `wp_postmeta`, `wp_posts`, `wp_redirection_logs`, `wp_sitemeta` の 4 つだった。 phpMyAdmin にログインして,無問題の wp_2_postmeta と wp_postmeta の構造をじっくり見比べてみた。 wp_postmeta の meta_id に AUTO_INCREMENT がないじゃん。ほかのテーブルも, ID に AUTO_INCREMENT がない。多分,このせいだ。

 何はともあれ,全データをバックアップの後,修復に取り掛かった。

  1. wp_postmeta テーブルを選択。
  2. メニューから「構造」を選択。
  3. 「操作」から meta_id の「変更」を選択。
  4. 「A_I」のチェックボックスをオンにしたのち保存。

 コマンドラインでやるなら,下みたいになるのかな。
ALTER TABLE `WordPress のデータベース名`.`wp_postmeta` CHANGE `meta_id` `meta_id`
BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;

 `wp_postmeta` と `wp_posts` については,問題無しだったが, `wp_redirection_logs` と `wp_sitemeta` では下記のエラーが出た。
#1062: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ‘1’ for key ‘PRIMARY’

 `wp_redirection_logs` は単に Redirection プラグインのログなので,空にしてやってから,上の手順を再実行。テーブルを空にするのを CUI でやるなら,こんな感じになるんかね。
TRUNCATE `WordPress のデータベース名`.`wp_redirection_logs`;

 `wp_sitemeta` のほうは中のデータが絶対にいるので,ひとまず空にして,上の手順を再実行したのち,さっきバックアップした sql ファイルから `wp_sitemeta` の INSERT 文を切り出し,テーブルに再インポートした。

 Apache のエラーログから,問題のエラーが消えて,親サイトの自動保存も生き返った。めでたしめでたし。

 自己流の修復なので,あまりあてにしないでくださいませ m(_”_)m。

追記(9/6):
 BulletProof Security .50.8 へのアップデートのときに,どうやっても, “Network/Multisite BPS plugin Network Activation correction:” が消えないトラブルに遭遇した。で,フォーラムに相談に行ってきた。素早い対応をもらって解決したわけだが,これも AUTO_INCREMENT がらみだったようだ。どうも,2・3日前に読んだ phpMyAdmin のバグ関連の気がするのだが,真相は,藪の中。溜息。

 まあ,とにかく,消えるべきものは消えた。これで,安心して眠れるワ (^_^;)。

WordPress のプラグイン bbPress で掲示板を作る。

投稿アップデート情報  追記(8/16) 追記2(11/4) 追記3(2016/2/27)

 サイトの CMS を WordPress にまとめて以来,掲示板をどうするかということについて悩んできた。
 掲示板に望む役割は,2つである。ひとつは,もちろん,一般的な掲示板の役目。もう一つは,本家の不具合―例えば, 403 forbidden, 503 Service Unavailable とかいう話―の連絡板としての役目である。したがって,設置場所は,自鯖以外でないと意味がない。

 英語サイトでは, WordPress のページのコメント機能を使ったものを作っていた。これは,上記の希望のどちらも満たしていない。しかし,たいして書き込みもない掲示板だったので,ほったらかしにしてあった(爆)。
 日本語のほうでは,流れで, Joyful Note を使ったものを Xrea 上に作っていた。こっちのほうは,2つとも望み通りになっていたのだが,2月にドメイン移管をしたら,移り先のサービスに Perl cgi がなくて使えなくなってしまった。仕方がないので, PukiWiki で作ってみたのだが, PukiWiki を使い慣れていないこともさることながら, PukiWiki のコンセプトそのものが掲示板になじまないようで,なんとも,情けない姿をさらしていた。

 10日くらい前に,突然ひらめいた。「簡単じゃん,WordPress.org のフォーラムみたいなもんを作ればいい」。早速,サイトのソースを眺めてみたら, bbPress というのが見つかった。そんなわけで, NetOwl 提供の WebCrow に, bbPress を使って掲示板を作ったよ。

 ところで, bbPress に関する情報というのは,ネット上にいやというくらい転がっているのだが,間違っても,古い情報を参考にしてはいけない。 bbPress はすごい勢いで変化してきてみたいで,古い情報は役に立たない。現在の bbPress は,完全に WordPress の一般的なプラグインである。したがって,そのインストールも ごく普通の plugin のインストールなので,他の情報に惑わされないこと。

 私が, bbPress についてカスタマイズしたのは,以下のところだけである。

  • 場合によって,とても読めないくらい字の色が薄いので, bbpress/templates/default/css/bbpress.css の中の3 か所で, #ccc & #bbb を # 333 に書き換えた。

         #bbpress-forums .status-closed,
         #bbpress-forums .status-closed a {
             color: #ccc;
     
         .bbp-forum-header a.bbp-forum-permalink,
         .bbp-topic-header a.bbp-topic-permalink,
         .bbp-reply-header a.bbp-reply-permalink {
             color: #ccc;
     
         span.bbp-admin-links a {
             color: #bbb;

 bbPress には画像添付の機能がないので, GD bbPress Attachments を使うことにした。ユーザ登録しなくても使えるように,以下の2つのフィルターをカスタマイズした。

  • gd-bbpress-attachments/code/attachments/class.php の中にある。
     return apply_filters('d4p_bbpressattchment_is_user_allowed', $allowed);
         ↓
     return apply_filters('d4p_bbpressattchment_is_user_allowed', true);
     
     return apply_filters('d4p_bbpressattchment_is_hidden_from_visitors', $value == 1);
         ↓
     return apply_filters('d4p_bbpressattchment_is_hidden_from_visitors', false);

 困っているのは,2プラグインとも完全な日本語化ファイルがどこにもなかったこと。一応,訪問者に見える部分だけは訳したのだが, bbPress なんて 1000 行以上もあるんだよ。完全訳は,掲示板のお披露目には,間に合わなかった。いつになるんかなぁ,我ながら自信がない (;´o`)。

 それと,「案内サピプッ」の6文字を Untitled1_sub.woff に追加した。 FontForge on Windows が安定して動くようになってて助かった,パチパチ。どういうわけか,今回は WOFFコンバータがちゃんと動かなかったので, Untitled1_sub.woff の更新には, ttf to woff converter を使った。

 古いコメントは,すべて新しい掲示板に移動した。

  • 注) bbPress はユーザーがコメントを弄ると,その時間をトピックごとに覚えていて (_bbp_last_active_time) ,経過時間として表示する。これは,移動した古いコメントには,そぐわない情報である。 WordPress の管理画面からは,この値を書き直せなかったので, SQL データを書き換えてやった。

 任務完了!! 掲示板はこちらです。お気軽にご利用ください m(_”_)m。

追記(8/16):
 こんなの見つけた。 https://translate.wordpress.org/projects/bbpress
 すごいなぁ。いろいろ時代に遅れてるなと感じてしまう。アクセスしてみよう!!

追記2(11/4):
 うちの掲示板はほとんどカスタマイズしていないが, bbPress では何種類かショートコードが使えるので,役に立つかもしれない。 bbPress のショートコード

追記3(2016/2/27):
 bbPress の日本語ファイルは, Translating WordPress から自動でダウンロードされる。従って,プラグインの language フォルダには, po も mo もいらない。いつからかははっきり記憶していないので,この機能が働く最低バージョンは書けないが,現時点ではうまく動いている。この追記を書いている時点での最新は WP4.4.2 と bb2.5.8 である。

WordPress3.9.2 Background Updates.

 今回も,朝起きたら,WordPress 3.9.2 になっていた。

 セキュリティメンテナンスリリースということで, ‘a possible denial of service issue in PHP’s XML processing’ のパッチなんぞが含まれている。「迅速なアップデートを強く推奨します」とのことなので, automatic background updates に対応していないサイトを運営してる場合は,お言葉にしたがって手動でアップデートしたほうがいいみたいス。

訂正されたファイルは下記の通り。

readme.html
wp-admin/about.php
wp-includes/ID3/getid3.lib.php
wp-includes/class-IXR.php
wp-includes/class-wp-customize-widgets.php
wp-includes/compat.php
wp-includes/pluggable.php
wp-includes/version.php
wp-login.php