Archive for the ‘Wordpress’ Category

Wordpress プラグインのcfomsIIをSSL対応を無理やりさせました。
単純な話、SSLではない(http://でアクセスした)場合にフォームを表示させないだけです。

PHP:
  1. ### SSL check
  2.     if ( $_SERVER['SERVER_PORT'] == 80 ){
  3.         $zServerUri = 'https://' . $_SERVER["SERVER_NAME"] . $_SERVER['REQUEST_URI'];
  4.         $content .= sprintf('<p><a href="%s">SSL対応ページから入力できます。</a></p>', $zServerUri);
  5.         return $content;
  6.     }

やってることは、サーバーポートが80以外だったらフォームを出力せずに、メッセージ「SSL対応ページから入力できます。」と表示させてるだけです。cforms.phpの280行目あたりに「### alternative form action」と書かれたコメントがあります。ここでフォームを生成しているので、この上の部分に書き込めばOKです。

日本語で直に書き込む場合、文字コードをUTF-8で保存することを忘れずに。

これで、SSL対応できると思います。サーバーポートについては環境によって変わってくるので、きっちりやりたい場合には ポート番号443以外であったらメッセージを表示させたほうがよいかもしれません。

なんかの拍子にWordpressのビジュアルエディタが使えなくなることが。
今回のタイミングは、Wordpressのバージョンアップ(2.5.1 から 2.6.1)したら使えなくなってた。

FirefoxのFirebugでエラーが出ている箇所がある。調べてみると tiny_mce_config.php で、不正な文字っていうことでエラーになってる。でも、同じXreaで使用しているwp2.6.1ではエラーは発生していないのでwpが変ということはなさそう。

二つのサイトの違いは、xreaかxrea+の違い(xrea+は広告除去とwebの容量アップの有料サービス)。ということは……例によって自動挿入される広告が悪さしているみたい。ということで、いつものおまじない(広告除去&safemode解除)を試してみる。

現状、/wp-admin/ディレクトリには下記の.htaccessを設定しているのですが、この.htaccessを/wp-includes/js/tinymce/ディレクトリにも設定。

.htaccessの見本

CODE:
  1. LayoutIgnoreURI *
  2. AddHandler application/x-httpd-phpcgi .php

1行目。広告除去。/wp-admin/とか/wp-includes/を見ることができるのは管理者および関係者のみのはずなので、広告は不要。2行目。phpのsafe mode解除。

本当なら、もっと原因を追究して.htaccessの有効範囲や内容を絞りたいけど、ちょっと時間が足りないために保留。ひとまず、これでビジュアルエディタ(TinyMCE)がつかえるようになったので、めでたしめでたし?

気が付けばWordpress MU(以下、wpmu)のバージョンが、1.5.1になっていました。
wpmu1.5.1はWordpressの2.5.1をベースにしている模様。

一回、wpmuをインストールして挫折したことがあったけど、再度チャレンジ。

coreserverは15GBが使えるレンタルサーバ(月500円)で安くてよいのですが、PHP 5がsafe modeで動作しているため、若干癖がある。そのためインストールメモ。
メモを取りながら~ではなく、作業後に思い出しながら書いてるので違うかもしれません。

  1. 事前準備。coreserver の管理メニューからmySQLでデータベースを作成しておく。
  2. coreserver にwpmuを展開。
    管理メニューのファイルマネージャからzipをアップロード&展開した場合、すべてが展開されない(2階層以下が無視される?)ので、FTPでつなげてアップロード。
  3. wpmuを展開したディレクトリ(たぶん、ドメインとおなじディレクトリ名)と、wp-contentのパーミッションに707を設定
  4. wp-adminに.htaccessを作成。下記のおまじないを記入。
    AddHandler application/x-httpd-phpcgi .php
  5. wpmuを展開したディレクトリにブラウザでアクセス
  6. wpmuの初期設定として、データベース、ユーザ名、パスワードを設定。あとはブログ名とかadmin用のメールアドレスを入力
  7. 無事にインストールできたらadmin用パスワードをメモ。
  8. FTPなどでwpmuを展開したディレクトリ(たぶん、ドメインとおなじディレクトリ名)と、wp-contentのパーミッションを705に戻す
  9. coreserver の管理メニューのツールにある「ファイル所有者名の変更」ボタンを押す。
    インストール時に自動生成されたファイル(.htaccess)やディレクトリ(wp-content内のディレクトリ)の所有者がapacheになってしまっていてあとで編集などができないために、この作業が必要になる。
  10. インストールした状態では英語のままなので、日本語に設定する……必要があるけど、wpmu1.5.1用の日本語ファイルの準備ができていないので、今日の時点ではあきらめ。がんばってください、翻訳作業をされている方々。

といった感じで、インストール終了。あとで検証をする予定なので、上記は変わるかも。

 

三題噺っぽいタイトルだけど、はまったのでメモ。

Wordpressは外部から記事を操作する仕組みとしてXMLRPCが提供されている。XMLPRC経由とはいえど、記事を操作するときにはユーザIDとパスワードを指定する必要がある。

Wordpressに標準設定されている権限を強い方から順番に……

  1. 管理者 / admin …… すべてOK(ユーザ作成やテーマ編集)
  2. 編集者 / editor …… カテゴリ編集、記事の編集(他人のものも)、コメントの承認ができるようになる
  3. 作成者 / author …… ファイルアップロードと記事の編集/公開ができるようになる
  4. 投稿者 / contributor …… 記事の作成/編集(公開はできない)ができる
  5. 購読者 / subscriber …… 読者

正直、管理者の権限はまだ理解できるけど、編集者/作成者/投稿者の権限は字面を読んだだけでは理解できなかった。大まかな整理は上記で大丈夫なはず。詳細についてはWordpress Codexを参照。

そして、もちろんXMLRPCで投稿するときも権限が関係してくる。XMLRPCから投稿して公開させるにはpublish_postsに対する権限が必要になってくるので権限:作成者(author)以上のユーザで使う必要があり。

権限が足りない場合、XMLRPCでエラーのリターンコード:401が帰ってくる。ただ、公開されている記事を取得する場合(metaWeblog.getPost)とかでも、権限的には購読者(subscriber)以上であれば問題の無いはずなのに、リターンコード:401。

時間の都合上 深く追っかけることができずに、XMLRPCを操作するユーザIDに管理者(admin)権限を割り当てて解決させてしまった。

SSLを使用していないのでパスワードが漏れて~とか考えたのが原因。仕事であればきっちりと権限を絞る&セキュアである必要があるけど、金銭が絡まないし消されたとしても趣味でやっている範囲なので、なにがあっても別段に問題はないので今回の対応でOKとしたい。

ユーザーの種類と権限
http://wpdocs.sourceforge.jp/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%A8%E6%A8%A9%E9%99%90

Roles and Capabilities
http://codex.wordpress.org/Roles_and_Capabilities

XMLRPCで日付がうまく更新できなかった件について。

恥ずかしながらケアレスミスでした。

xmlrpcのdateCreatedパラメータに対して変数で日付を指定していたところが、変数名が間違えていたため正しい値で代入できなかった様子。

20080508T12:31:00 (最後にZはつかない)の方法でバッチリと日付指定ができるようになりました。

ここのサイトじゃないですけど、HostGatorで使ってるWordpressにWp Super Cacheを導入。

別段特別な設定をする必要もなく、PluginフォルダにWp Super Cacheを展開してプラグインを有効にするだけ。あとは、.htaccessを書き換え(ボタン一つで書き換えてくれる。だめなら手で)。導入も簡単でした。

効果のほどは……想像以上。海外サーバっていうこともあって遅い点は仕方ないとしても、ピークタイムにMySQLが遅くてもキャッシュが効いていればパッと表示されます。キャッシュが静的HTMLとして出力しているのであたりまえって言えばあたりまえの話ですが、かなり有効っぽいです。

現状、記事数が2000を超えているのでキャッシュの保持時間をどのように設定すればいいのかわからないので、キャッシュタイムを1週間(604800秒)に設定。あとはしばらく様子見です。

WordpressとXMLRPC

2008年05月09日 1 Comment

分からないこと。

  • 日付の指定方法。20080508T12:31:00Zとか2008-05-08T12:31:00Z?
  • カスタマーフィールドへの挿入

ちょっと試行錯誤してみよう。

CMSとしてWordpressをココ以外で使ってるんだけど、エクスポート/インポート機能が変。

とある海外のサーバ(HostGator)にWordpressを設置して、XMLRPCで投稿しようとするとエラー。仕方ないので、CoreserverにWordpressを設置してXMLRPCで投稿。Coreserverに投稿したものをエクスポートして、HostGatorのWordpressにインポートすると……一部の記事がインポートされてない。

深いところまで追求はしてないけど、インポートorエクスポートをするときに記事の中身がでかい(文字数が多い)と失敗するみたい。100KBを超えるようなサイズだったので仕方ないといえば仕方ない。

インポート時にログが出力されるので、ログを見ればいいのかもしれないけど大丈夫だろうと思って、見ないでログを閉じてしまったので確認するすべがない状態。たぶんインポートログがwp-contentsの中にあるはずだろうから、あとで探してみよう。

直接、HostGatorのWordpressにXMLRPCで投稿できればこんな問題にならないんだけれど、、、こっちも調べてるかな。

これの続き

入れ替えをした理由は、単純に「自分自身のWordpressに対する理解が足りていない」ため。

Wordpress(以下、wp)は1システム 1ブログに対して、Wordpress Mu(以下、wpmu)はWordpressの仕組みを利用して1システム 複数ブログが実装されているCMSなのですが、Wordpressはもともと複数ブログに対応できるシステムじゃないため、機能追加をするプラグインがwpmuに対応しきれていないこともしばしば。

wpmuはwpの本流ではないので、プラグインがwpmuに対応しきれていないのも当たり前の話で、Googleで検索してみても、このプラグインはwpmuで使えなかったとか色々と事例が出てきていたり(→検索)

調べてみれば、ブログ別のフォルダについて別途対応させることができればwp用プラグインもwpmu用に使えるようになるみたいだけど、wpに触りなれていない自分としてはちょっと敷居が高い。

1システム 複数ブログがやりたいだけならば、それにわざわざwpmuを使わなくともNucleusとか使えばいいし、他のCMSとか色々選択肢が存在する。もちろんlivedoorとかfc2のブログサービスを使うのも手。
一応フォローをすると、wpmuにもいいところはあって さわってみたら他のCMSよりもインストールが楽だし、ブログの作成が楽。システム管理者向けとしてはwpmuは便利だとおもう。

さすがに、上記のメリットがあっても個人でwpmu用にプラグインを解析&修正してまで入れ込む理由がないのでwpmuを使い続けることは諦めました。

たぶん、wpmuを使っていても結局は自分ひとりだけでコンテンツ別のブログを立ち上げたりするだけなので、新しいコンテンツ別のブログが必要ならばwpを追加すればいいような気がしてきたので、wpmuをやめてwpに移行。

移行するときも楽で、wpmuからブログ別にエクスポート[*]して、wpmu&DBのデータを初期化して、wpをインストールして wpmuからエクスポートしたデータをインポートするだけ。これはwp系内の移行だったからかなり楽に完了。テーマもディレクトリごとwpmuからwpにコピー。

ちょこちょこと自分で弄り回したい場合はwp、大人数用のブログが必要(押し付け?)な場合はwpmuが重宝しそう。

Wordpress MuからWordpress 2.5 jpへシステム入れ替え。理由は後ほど。