カテゴリー
WordPress

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

The same article in English
投稿アップデート情報  追記(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

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

The same article in English
投稿アップデート情報  追記(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 である。

カテゴリー
WordPress

WordPress3.9.2 Background Updates.

The same article in English

 今回も,朝起きたら,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

カテゴリー
WordPress

覚え書-#17。

 いつも忘れるので,メモ。

 デフォルトままのだと, /?author=1 をやると登録ユーザ名が見えてしまう。これは,管理ページのプロフィールで,表示名をニックネームとかに変えてても同じ。

 これを避けるために, Edit Author Slug プラグインを使って,管理ページのプロフィールで変更する。変更後は,プラグインは停止・削除してかまわない。

カテゴリー
WordPress

WordPressでの「SSL3_READ_BYTES:sslv3 alert handshake failure」を解決。

The same article in English

 WordPress 3.7 から ca-bundle.crt が含まれるようになったんだが,その後,「Upgrade Network」のときにエラーが出るようになった。ところで,「Warning! Problem updating https://SITENAME.」というのを1つのサイトだけおかしいんだと勘違いしていたのだが,一番初めに調べたサイトでエラーが出てるんだから,あとは調べてないわけだよな(汗)。

 はじめのエラーは,「Error message: SSL certificate problem: self signed certificate in certificate chain」というので,これは自前認証局を使ってるせいだったんだが, Oiram の教えてくれた通り, ca-bundle.crt に自前の CA のデータを書き加えてやったら,よくなった。

 で,次が「“Error message: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure」。これに2か月以上手を焼いていたが,本日,やっと,解決した \(^o^)/。

 振り返ってみると,結局のところ3つのポイントがあったようだ。

  1. うちの client.crt には ssl_client extension を使っていなかった。で, client.crt を ssl_client extension 付きで作り直した。参考にしたのは, “sslv3 alert handshake failure when using SSL client auth”
    まず, openssl.cnf に次の行を追加した。

    [ ssl_client ]
    basicConstraints = CA:FALSE
    nsCertType = client
    keyUsage = digitalSignature, keyEncipherment
    extendedKeyUsage = clientAuth
    nsComment = “OpenSSL Certificate for SSL Client”

    でもって, ssl_client extension を使って client.crt を作り直した。
    >openssl ca -config openssl.cnf -policy policy_anything -extensions ssl_client -in client.csr -out client.crt

    • 古いほうの client.crt で “openssl s_client -connect o6asan.com:443 -cert client.crt -key client.key -CAfile cacert.pem” をやると,下の2つのエラーが出ていたが,新しいのだと出なくなった。
    • error:14094418:SSL routines:SSL3_READ_BYTES: ~
      error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure: ~
    • 当然ながら, clientcert.p12 も作り直した。
  2. WordPress は「Upgrade Network」のときに cURL を利用しているのだが, cURL は P12 format certificates を受用しないので, PEM format に直さなければ使えない。
    • clientcert.p12 から clientcert.pem を作る
      >openssl pkcs12 -in clientcert.p12 -nokeys -clcerts -out clientcert.pem
    • clientcert.p12 から clientkey.pem を作る。
      >openssl pkcs12 -in clientcert.p12 -nocerts -out clientkey.pem
       
      clientkey.pem のコピーを作り, pass phrase を削除する。
      >copy clientkey.pem cp_clientkey.pem
      >openssl rsa <cp_clientkey.pem> clientkey.pem
  3. WordPress に client 証明書の場所を教えてやる
    • class-http.php の「curl_setopt( $handle, CURLOPT_CAINFO, $r[‘sslcertificates’] );」行の直前に,以下の2行を書き加える。

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

      WordPress の core スクリプトを書き換えるのは嫌なので,何とかほかの方法でやろうと頑張ったのだが,どうしてもうまくいかなくて,結局, class-http.php をいじることにした。

      clientcert.pem と clientkey.pem をサーバ上のどこか,外部のものがネット経由でアクセスできない,より安全な場所にコピーする。

    参考サイトは, Client URL Library

 自前認証局の作り方は,「本家のお世話-#68。(WordPress SSL ログイン-#1)」をどうぞ。

 エラーが消えたよ。満足じゃ。パチパチ!!

カテゴリー
WordPress

WordPress3.9.1 Background Updates.

The same article in English
投稿アップデート情報  追記

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

 メンテナンスリリースということだが, 34 のバグが手直しされている。特に,マルチサイト・ネットワーク関係がたくさんあるらしい。訂正されたファイルは下記の通りで,結構な数だ。

readme.html
wp-admin/css/edit.css
wp-admin/css/forms-rtl.css
wp-admin/css/login-rtl.min.css
wp-admin/css/admin-menu-rtl.css
wp-admin/css/wp-admin-rtl.min.css
wp-admin/css/edit-rtl.css
wp-admin/css/forms.css
wp-admin/css/admin-menu.css
wp-admin/css/login.min.css
wp-admin/css/wp-admin.min.css
wp-admin/about.php
wp-admin/user/menu.php
wp-admin/includes/ajax-actions.php
wp-admin/js/post.min.js
wp-admin/js/customize-controls.min.js
wp-admin/js/post.js
wp-admin/js/customize-controls.js
wp-admin/custom-header.php
wp-admin/credits.php
wp-admin/freedoms.php
wp-includes/ms-settings.php
wp-includes/class-wp-editor.php
wp-includes/media.php
wp-includes/js/shortcode.min.js
wp-includes/js/customize-views.js
wp-includes/js/media-views.min.js
wp-includes/js/tinymce/plugins/wpview/plugin.js
wp-includes/js/tinymce/plugins/wpview/plugin.min.js
wp-includes/js/tinymce/plugins/wordpress/plugin.js
wp-includes/js/tinymce/plugins/wordpress/plugin.min.js
wp-includes/js/tinymce/plugins/wpeditimage/plugin.js
wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js
wp-includes/js/tinymce/plugins/wplink/plugin.min.js
wp-includes/js/tinymce/plugins/wplink/plugin.js
wp-includes/js/tinymce/wp-tinymce.js.gz
wp-includes/js/customize-models.js
wp-includes/js/mce-view.js
wp-includes/js/mediaelement/wp-playlist.js
wp-includes/js/mediaelement/wp-mediaelement.css
wp-includes/js/media-audiovideo.min.js
wp-includes/js/shortcode.js
wp-includes/js/media-views.js
wp-includes/js/customize-views.min.js
wp-includes/js/media-audiovideo.js
wp-includes/js/customize-models.min.js
wp-includes/js/mce-view.min.js
wp-includes/version.php
wp-includes/default-widgets.php
wp-includes/script-loader.php
wp-includes/media-template.php
wp-includes/ms-load.php
wp-includes/css/editor-rtl.css
wp-includes/css/editor.css
wp-includes/css/media-views-rtl.min.css
wp-includes/css/media-views.min.css
wp-includes/css/editor-rtl.min.css
wp-includes/css/editor.min.css
wp-includes/css/media-views-rtl.css
wp-includes/css/media-views.css
wp-includes/widgets.php

追記:
 確認してみたら,なんと,165ものファイルが削除されていた。 css , js 関係がほとんどである。特に tinymce 関連で大きな違いがある。なんなんだろう。 3.9 でビジュアルエディタ関連の不具合があったせいかな。今年初めに tinymce が WordPress コアにマージされるという話があったと思うが,多分それがビジュアルエディタと関係があるんだろうしな。
  削除ファイル一覧

カテゴリー
WordPress

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

The same article in English
投稿アップデート情報  追記  追記2(6/22)

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

追記:
 さっき,20:20ごろ, WordPress 3.9 日本語版にアップグレードした。機能は,特に問題なく働いているのだが, 3.8.3 のとき同様,またもや Warning! Problem updating https://SITENAME. Your server may not be able to connect to sites running on it. Error message: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure が出た。なんでだろう。少し,真剣に調べてみないといけないかな。

 WordPress 3.9 関係の資料。 Codex(日本語), Blog(日本語), Changelog.

追記2(6/22):
 WordPressでの「SSL3_READ_BYTES:sslv3 alert handshake failure」を解決というのを書いた。

カテゴリー
WordPress

引き続きまして,WordPress 3.8.3。

The same article in English
投稿アップデート情報  追記  追記2(6/22)

 えーっと,先日,くりくりさんへのコメントで,「マイナーアップデートは自動に任せていい」と書いたばかりなのだが,今回みたいに,ローカライズ関係のファイルが入ってるのに,自動でアップデートされるとまずいかもしれない。

 今回のアップデートファイルには,

wp-admin/includes/upgrade.php
wp-admin/includes/post.php
wp-admin/about.php
wp-includes/version.php
readme.html

と, version.php が入っているが,実は, version.php には, $wp_local_package がある。自動アップデートで,ここがなくなると,不具合が起こる可能性もある。日本語版が出る前に自動アップデートされてしまった場合は, version.php を開けて最終行に
     $wp_local_package = ‘ja’;
を追記してやろう。

 ところで, Oiram回避策を使っているにもかかわらず,今回また,
Warning! Problem updating https://SITENAME. Your server may not be able to connect to sites running on it.
が出ている。ただ,エラーメッセージは前と違い, Error message: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure なんだが,どうしたら直るのか,まだわからない。でもって,今回もエラーは一つのサイトについてだけなんだ。そのサイトは,前と同じ。なんでなんだろう?

追記:
 うーん,「朝起きたら,WordPress 3.8.2 だった。」で書いていることと,矛盾してるな(苦)。 3.8.2 の version.php には $wp_local_package = ‘ja’; が入っていなかったけど,何の問題もなかった(アワワワ)。困ったちゃんねぇ(⇒私)。

追記2(6/22):
 WordPressでの「SSL3_READ_BYTES:sslv3 alert handshake failure」を解決というのを書いた。

カテゴリー
WordPress

朝起きたら,WordPress 3.8.2 だった。

The same article in English
投稿アップデート情報  追記(4/10)  追記2(4/15)

 朝起きたら,WordPress 3.8.2 だった。て,言うか,もちろん,ログインしてみたらという話だが。

 夕べ, SSL 関係を作り直して, ca-bundle.crt に改めて Oiram回避策を施したところだったので,アップデートがどうなるか気になっていたのだが,大丈夫だった。ホッ。

追記(4/10):
 今回のマイナーアップデート対象ファイルは,以下の15個。言語関係は含まれていない。本日の検索ワードに「wordpress 3.8.2 日本語化」があったので,蛇足ながら,追記。

readme.html
wp-admin/about.php
wp-admin/includes/class-wp-posts-list-table.php
wp-admin/includes/class-wp-upgrader.php
wp-admin/includes/post.php
wp-admin/includes/update-core.php
wp-admin/themes.php
wp-includes/bookmark.php
wp-includes/class-wp-xmlrpc-server.php
wp-includes/js/pluploadplupload.silverlight.xap
wp-includes/pluggable.php
wp-includes/post-template.php
wp-includes/query.php
wp-includes/update.php
wp-includes/version.php

 つまり, wordpress 3.8.1 + 上記15ファイルで問題ないから,マイナーアップデートは自動で十分,と思う。

追記2(4/15):
 うーん,「引き続きまして,WordPress 3.8.3。」で書いていることと,矛盾してるな(苦)。 version.php には $wp_local_package = ‘ja’; が入っていなかったけど,何の問題もなかった(アワワワ)。困ったちゃんねぇ(⇒私)。

カテゴリー
WordPress

自作 WOFF を作ってみた-#3。

The same article in English
投稿アップデート情報  追記(7/17)

New Widgets Title on Japanese blog 「自作 WOFF を作ってみた-#2。」の続きです。

 前回で, ttf ファイル(Untitled1.ttf)を手にしたので,これから, WOFF ファイルを作る。まず,サブセット化し,後に WOFF ファイルを作る。実のところ,できた ttf には 31 文字しか含まれていないのだが,それでもサブセット化すると小さくなったので,この作業もやる意味はある。

 ネット上に,結構いくつも, ttf から woff を作ってくれるサイトがある。例えば, Webfont Generator とか ttf to woff converter とか Font2Web とか。日本語に対応しているところもあるし,対応していないところもある。コマンドライン系のツールで, sfnt2woff などもある。しかし,今回,私は武蔵システムが配布している WOFFコンバータという Windows 2000/XP/Vista/7/8 でも Mac OS X 10.6 以降でも動くありがたいソフトを使った。彼らはさらに,サブセットフォントメーカーまで配布してくれている。ありがたく使わせていただいた。本当に,感謝に堪えない。

  1. サブセットフォントメーカー と WOFFコンバータをインストール。
  2. サブセットフォントメーカーを実行。   — Fig.1
  3. 2が済むと, WOFFコンバータ が自動的に起動する。   — Fig.2

 以下の3つのファイルが作られる。
     ・Untitled1_sub.html
     ・Untitled1_sub.ttf
     ・Untitled1_sub.woff

 Untitled1_sub.html をテキストエディタで開けてみれば,必要な css コードは分かる。

 私の目的は,この WOFF を ‘Sugar and Spice’子テーマで―これをこのブログのテーマに使っているのだが―使うことだから,必要な変更を style.css に書き加えた。現時点の子テーマの style.css を以下に載せておく。太字の斜字体部分が今回の変更点である。当然ながら WOFF ファイルは,サーバにアップロードしておかなくてはならない。
 で,ウィジェットタイトルは,どんなふうになったかというと,この記事の右上の画像のように変わったわけだ。 WOFF ファイルのサイズはわずかに 10.8KB である。まぁ,なんちゅうか,自己満足の世界だけどねぇ (エへへ)。

 任務完了!! 拍手うーーーーーー。

/*
Theme Name: J blog
Theme URI: http://webtuts.pl/themes/sugar-spice
Description: sugarspice Child Theme
Author: Aleksandra Laczek
Author URI: http://webtuts.pl
Template: sugar-and-spice
Tags: light, white, gray, two-columns, fixed-layout, responsive-layout,
custom-background, custom-menu, featured-images, theme-options, threaded-comments,
translation-ready, full-width-template
Text Domain: sugarspice-child
*/

@import url("../sugar-and-spice/style.css");

/* =Theme customization starts here
-------------------------------------------------------------- */
@font-face {
font-family: 'MyFont';
src: url('Untitled1_sub.woff の URL を記入') format('woff');
}

body {
color: #000;
}

/* Typography */
h1, h2, h3, h4, h5, h6 {
color: #000;
}

/* Calendar Widget */
table th,
table td{
color: #000;
background: transparent;
border: none;
text-align: left;
}

.widget-title em {
font-family: 'MyFont';
font-size: 26px;
font-style: normal;
padding-left: 3px;
}

/* 07. Forms & buttons
================================================== */
.button,
button,
input[type="submit"],
input[type="reset"],
input[type="button"] {
color: #000;
}

/* #Forms */
input[type="text"],
input[type="search"],
input[type="password"],
input[type="email"],
textarea,
select {
color: #000;
}

input[type="text"]:focus,
input[type="search"]:focus,
input[type="password"]:focus,
input[type="email"]:focus,
textarea:focus {
color: #000;
}

label span,
legend span {
color: #000;
}

追記(7/17):
 みなさーん,いいお知らせです!! FontForge for Windows が普通に動くようになってるよぉ。現時点のバージョンは, 20-06-2014 みたい。