Category Archives: WordPress

WordPress: 結局またテーマを変える

Thursday 23 April 2015

 2月にブログのデザインをTwenty Fifteenをベースにしたものに変更しましたが、それをカスタマイズしていこうとすると、このCSSが異常に長い。5700行もあって、そのうちのかなりの部分が様々な画面サイズに対応するためのメディアクエリーの表記で占められています。 Continue reading

WebminでFTP over SSLの設定

Wednesday 23 February 2011

FTPは暗号化されない通信だけれども、IDとパスワードを盗み見られてしまうと、サーバーのファイルを削除されたり書き換えられたりする心配があります。
なので、うちのサーバーではFTPはほとんど使っておらず、ファイル転送には主にSFTP(SSHを使ってファイル転送を行う)を利用しています。クライアントはCodaやDreamweaverです。

ただ、それを他のユーザーに使ってもらうためには、SSHでのアクセスを与えることになり、それもまた、なんでも(たとえばルート・ディレクトリーにさかのぼっていくとか)できてしまうわけで不安。安全にファイルのアップロード/ダウンロードだけを使ってもらえるように、FTP over SSL (FTPS)を導入することにしました。

で、前の記事でWebminにvsftpdのモジュールを追加したと書いたのですが、その辺の設定をしたかったわけです(正直、コマンドラインであれこれやるのは苦手)。

設定はあっという間でした。あー、なんでもっと早くやっておかなかったんだろう、っていう感じです。

  1. まずWebminのvsftpdを選び、SSL CERTアイコンをクリックします。
  2. SSL CERT icon

    ここでサーバー名やメールアドレスなどを入力して証明書を作成、「CREATE CERTIFICATE」ボタンをクリックします。

  3. 次にMiscellaneousを選びます。
  4. Miscellaneous icon

  5. SSL enableをYESに。
  6. rsa cert fileには、うちでは自動的に証明書のパスが入っていましたが、違う場所に作った場合、既存の証明書を使う場合などにはここを変更する必要があるのでしょう。

    ftp server parameters

  7. で、変更を保存(Save changes)。
  8. 「Restart vsftpd server」ボタンをクリック。
    これでCodaなどの対応クライアントで、FTP over SSLが使えるようになります。また、Wordpressの自動アップデートでも、FTPSを使うことができるようになります。

この作業によって、実際にはvsftpd.confファイルに以下のようなパラメーターが追加記述されます。

ssl_enable=YES
force_local_data_ssl=NO
force_local_logins_ssl=NO
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem

プレーンテキストでのログインを禁止(SSLでのみログインできる状態に)するには、force_local_logins_ssl=YESとします。

WordPressのテストサイトのディレクトリーを移動する

Monday 24 January 2011

…というか、なんと表現したらいいのかよくわかりませんが、何度かやっていることなのでメモしておきます。
やることは以下のとおりです。

状況:

  • あるサイトが www.example.com で運用されている
  • ウェブサーバーはApacheで、バーチャルドメインを使っている
  • www.example.com/wp/ 以下にWordPressで新しいサイトを制作し、テストする
  • テストサイトがOKになったら、 www.example.com のルートをテストサイトのルートに変更する

手順:

  1. テストサイトのダッシュボードにログイン
  2. Settingsの WordPress address (URL) と Site address (URL) を www.example.com に変更して Save Changes をクリック
    多分、ここで強制的にWordPressのダッシュボードからログアウトされます。
  3. Apache設定ファイル httpd.conf の <VirtualHost> ディレクティブの DocumentRoot を www.example.com/wp に書き換え、保存、設定を再読み込みする
  4. .htaccessを作り直す。

ただし、WordPressのポストやページの中に画像などがあるときは、その記事中のパスについて調整が必要です。

ツイートボタン

Sunday 22 August 2010

ふと見ると、Twitter活用術のページで「ツイートボタン」というのが提供されていました。
実にシンプルなものだったので、早速Wordpressaにも設置しました。
各記事の右下のあたりに「ツイートする」というボタンが表示されているので、それをクリックすると記事への短縮リンクを含んだツイートをポストすることができます。

WordPressのiPhone用プラグイン

Wednesday 26 May 2010

WordPressのサイトをモバイル端末の小さな画面に合わせた表示に変えてくれるプラグイン、WPtouchを入れました。

iPhoneのウェブ・ブラウザーはデスクトップとほぼ同じに表示されるし、小さいところは拡大して見ればいい…わけですが、やはり文字中心のブログでは、豪華なグラフィックスは省略して「それ用」の表示にしたいわけです。

一昨年iPhoneを買ったときから、その必要性には気付いていましたよ、ええ。
自分でそういうCSSを作ろうかなあ、と思っていましたが、ほどなくしてこのWPtouchが出ました。
でもなんか、くやしいじゃないですか、出来合いのプラグインを入れて終わりっていうのが…。(^^;
なんて思いつつ、結局自分ではなかなかやらない。orz

で、ようやく負けを認めつつ、いや便利な物は積極的に活用していこうと思い、WPtouch導入となったわけです。
最初からやれよ、っていうことですか。はい、その通りです。

で、実にほぼデフォルトな感じで使っていますが(といってもちょっとは設定変えてますが)、iPhoneで見るとこのような表示になります。

iPhone screen with WPtouch

ちなみに、WPtouchでは、以下のようなUserAgentに対応しているようです。

"iPhone", // Apple iPhone
"iPod", // Apple iPod touch
"Android", // 1.5+ Android
"dream", // Pre 1.5 Android
"CUPCAKE", // 1.5+ Android
"BlackBerry9500", // Storm
"BlackBerry9530", // Storm
"webOS", // Palm Pre Experimental
"incognito", // Other iPhone browser
"webmate" // Other iPhone browser

WordPressの古い日付

Friday 6 November 2009

(現在のバージョン2.8の)WordPressの日付・時刻は、1970年1月1日午前0時から始まります。それより前の時刻の記事(たとえば、1969年12月31日)を作成しても、通常のthe_time()関数での表示は閲覧時点の日付・時刻になってしまいます。
これは世界標準時なので、日本標準時で使う場合は1970年1月1日の午前9時より前の日付・時刻が使えません。

しかし、WordPressの記事自体は、MySQLの中に0000-00-00 00:00:00の形式で保存されています。将来的には、WordPress自体が対応してくれることを望みます。

で、あるアーカイブで古い文書を公開しているのですが、そこで1969年以前の日付を使いたいということになりました。前述の通り、幸いにもデータそのものは自由な日付を入力できるので、あとはそれを読み出して表示する関数を書けば対応できるだろうということになります。

というわけで、ここらへんを参考にPHPで初めて関数を書きました。(*^_^*)


<?php
function wp_date_in_mysql( $postid )
{
  $sql_command = 
    "SELECT post_date FROM wp_posts WHERE ID='$postid'";
  $result_resource = mysql_query( $sql_command );
  if ( ! $result_resource ){
    echo mysql_error(); 
  } else {
    $the_record = mysql_fetch_array( $result_resource );
    $datestring = 
      substr( $the_record[ 'post_date' ], 0,10 );
    return str_replace( "-", "/", $datestring );
  }
}
?>

呼び出し側は、$s = wp_date_in_mysql( $post->ID );のように記事のIDを渡します(ループの中で使います)。
関数内では、MySQLのクエリーでその記事のレコードを読みだしています。
今回の仕事では、時刻のデータが不要だったので、まずsubstr()関数で0文字目から10文字分を切り出し、0000-00-00の形にしています。
次に、str_replace()関数で区切り記号を-(ハイフン)から/(スラッシュ)に置き換えています。

これを使ってもダッシュボードでは古い日付は正しく表示されないのですが、WordPressのコード自体をいじるのではなく、テーマのファイルに書き加えるだけなので、しばらくは使えるかな、という気がしています。

カテゴリーごとのバナー広告

Sunday 25 October 2009

このサイトのサイドバーに、正方形のバナー広告を掲載しています。バナーは主にリンクシェアというところを通して配信されています。といっても、まあそんなに大量のアクセスがあるわけでもなく、アフィリエイト収入なんてたかが知れているのですが、一応いまさらながら、記事ごとに違うバナーが表示されるようにしてみました。


<?php
/* set weekday number. */
$today = date("w");

/* set banner links. */
$itunesfreebanner = 'link1';
$bosemobilebanner = 'link2';
$act2macosxbanner = 'link3';

if ( in_category( 'iphone' ) ){
    print( '<p>'.$bosemobilebanner.'</p>'  );
} elseif ( in_category( 'Mac' ) ){
    ( '<p>'.$act2macosxbanner.'</p>'  );
} else	if ( $today >= '2' && $today <= '5' ){
    print( '<p>'.$itunesfreebanner.'</p>' );
} else {
    print( '<p>'.$itunesrecommendbanner.'</p>' );
}
?>

link1, link2…のところに、バナーのコードを入れます。
記事のカテゴリーが「iphone」のときは「ボーズモバイルヘッドセット」、「Mac」のときは「act2」、それ以外は「iTunes」のバナーになります。
iTunesのバナーは、火曜日に無料ダウンロードの曲が更新されるようなので、火曜から金曜(date(“w”)で得られる曜日番号が2〜5のとき)はそれを、土曜から月曜は自動ローテーションのバナーが表示されます。

こういうのは、JavaScriptでやった方がサーバーに負担がない、という考え方もあるかもしれませんが、ユーザーがオフにしちゃうこともあるわけで、PHPの方が確実に表示させることができるという感じでしょうか。

WordPressの新規ユーザーへのメール

Tuesday 22 September 2009

WordPressに新規登録したユーザーにはお知らせメールが送られますが、それを編集できるプラグインがありました。

が、このプラグインはPHP5が必要。

ということで仕方なく、この度はとりあえず、ハック。(^^;
下のPHPファイルの中に、お知らせメールのコードがあります。

wp-include/pluggable.php

wp_new_user_notificationという関数の中を少し編集します。ログインURLを非表示にして、そのかわりにブログのホームページへ誘導。

$message = sprintf(__('Username: %s'), $user_login) . "¥r¥n";
$message .= sprintf(__('Password: %s'), $plaintext_pass) . "¥r¥n¥r¥n";
/* $message .= wp_login_url() . "¥r¥n"; */
$message .= get_option('blogname') . "¥r¥n¥r¥n";
$message .= get_option('home') . "¥r¥n";

get_option(‘blogdescription’); でブログの紹介文を加えることもできます。オプションについてはこちら。

もちろん、こういう場所をハックしてしまうと、WordPressをアップデートしたら、また書き直しです。今回、一度しか必要ないのでやりましたが…。(^^;

WordPressのバックアップ

Sunday 20 September 2009

WordPressの投稿やユーザーは、MySQLのデータベースになっています。
また、テーマやプラグイン、アップロードされたグラフィックスなどは、基本的にWordPressのインストールされているディレクトリー下にあります。
ということで、MySQLのバックアップと、ディレクトリーの複製という二つの作業を行ないました。

ディレクトリーの複製

これは単純に、cpコマンドでディレクトリー全体を複製しました。例ではWordPressがインストールしてあるディレクトリーwpをwpbackupに複製します。

$ cp -pR wp wpbackup

オプションの-pは、ファイルの属性(パーミッション)を保持したままコピー。
-Rは、再帰的にコピーする(サブディレクトリーもコピーする)ということだそうです。

これで、もしwpディレクトリーの中がぐちゃぐちゃになってしまったとしても、削除して(rm -R wp)、複製し直せば(cp -pR wpbackup wp)元に戻ります。

MySQLのデータベースのバックアップ

phpMyAdminを使った方法が紹介されていますが、今回はこちらのページを参考にコマンドラインからバックアップを作成しました。

$ mysqldump -u username -ppassword wpdatabase > wpdatabase.sql

このページにも書いてありますが、「-pとパスワード名は間をあけない」というのが、一瞬悩みました。(^^;

ちなみに、MySQLは、以下のようにして使用を開始します(MySQLのモード?に入ります)。

$ mysql -u root -p

コマンド・プロンプトがmysql>になるので、終了するにはexitコマンドを入力します。

mysql>exit

MySQLのコマンドは、最後が ; (セミコロン)で終わるのが特徴のようです。

他に、Webminも使って、毎日自動バックアップもとっています。まあ、そんなに頻繁に更新してされているわけでもないので、本当はそのファイルがあれば十分だったのですが、一応練習がてらやってみました。

こちらは日本語の説明。

古いWordPressのサイトを新サイトに移行

Sunday 20 September 2009

MovableTypeからWordPressに乗り換えて最初に作ったサイトを、ようやく新しいバージョン(2.8)のWordPressにアップデートしました。事情があってバージョン2.0.11 ME(だったかな?)のまま放置せざるを得なかったのだけど、このバージョンでは先日知った新しいタグ(wp_list_categories)が使えないことがわかったので。

でもこれが、想像以上に大変でした。
バージョン2.0のころというと、まだ2年も経ってないのだけれど、現在までの間にWordPressは大幅に進歩しました。使えるタグの仕様が変わっていったのは当然として、文字コードの関係とかもあったんですよね。もうこれは、本当に日本人でいるかぎり、30年後でも悩まされるんだろうな。これまでコンピューターを使ってきて、最初から日本語が何の問題もなく使えるものって、出会ったことがないです(WindowsだってVistaになってようやく普通に日本語に対応したんですから…)。
まあ、そういうアーリー・アドプターの悩みは、好きでやってることだから仕方がないです。

今回の場合、一気に2.8にアップデートしようとしたら、全面的に文字化けになってしまいました。
当初からエンコーディングはUTF-8を使っています。
はっきりとは分からないのですが、2.2以降、日本語関係が変更になっているようです(どっかに書いてあったんだけど、忘れてしまった…)。

ということで、手順の大きな流れ

  1. まずは現在のサイトのバックアップを作成
    まずWordPressのファイルの単なるバックアップです。WordPressのインストールしてあるディレクトリー全体をcpで複製します。
    もうひとつ、MySQLのデータベースもバックアップを作っておきます。
  2. データベースを書き出し
    WordPressの書き出し機能を使って、投稿を書き出します。これはXML形式のファイルを手元にダウンロードすることができます。
    ただし、書き出し機能が付いたのはWordPress 2.1からでした。だから、まず2.0を2.1にアップデートしなくてはいけない。ところが日本語版の2.1はすでにダウンロードできないらしい。ということで、仕方なく英語版2.1.3にアップデートしました。
  3. 2.1のログイン画面。なんかナツカシス。

    2.1のログイン画面。なんかナツカシス。

  4. 別ディレクトリーに2.8を新規インストール
    MySQLのデータベースも新しく作ります。

    うちの場合、WordPressをインストールするたびに新しいデータベースを作ることができるのですが、それができない場合にはwp-config.phpファイルの中の「データベーステーブルの接頭辞」(prefix)というのを変更して別のテーブルを作れば、古いWordPressと新しいWordPressを共存させることができるらしいです。たとえば、$table_prefix = ‘wp01_’;とかにする(?未検証)

    この段階では、暫定のURLで動かしておきます。

  5. データベースを読み込み
    最初うまくいったように見えたんですが、実際はカテゴリーの関連づけ(親と子)が滅茶苦茶になってしまっていました。で、結局それを手で直しました。(;_;)

    詳しく分からなかったのですが、日本語のカテゴリー・スラッグが問題になっていたようです。2.1.3の書き出しに問題があるのか、他のバージョンでも同じようになるのか、アルファベットのカテゴリー・スラッグなら問題は発生しないのか、など、わかっていません。(^^;

  6. ウェブサーバーの設定変更で新しいディレクトリーを使うようにする
    Apacheの設定を書き換え、以前から使っていたURLが新しい2.8のディレクトリーを指すようにします。そのあとWordPressにログインして、ダッシュボードの「設定」のところでURLの設定も書き換えます。

wp_list_catsは古くなってた。

Thursday 17 September 2009

サイドバーにカテゴリーのリストを表示するテンプレート・タグ、wp_list_cats()は古くなって、wp_list_categories()に置き換えられてました。

知らなかったよ…。

wp_list_catsでは、表示したくないカテゴリーを指定することはできました。たとえば↓でカテゴリーID 10と15はリストに載らなくなる。

新しいwp_list_categoriesでも同様にexcludeが使えますが、includeという引数で表示したいカテゴリーを指定することもできるようになってるみたいです。次のようにすると、ID 3,5,9,16の4つだけリストに載ります。

いろいろ柔軟性が増しますね。
でも、古いテーマを書き換えなくちゃ…。

WordPress 2.7にしてみた

Wednesday 24 December 2008

ダッシュボードのインターフェースが大幅に変更になっています。

基本的には、左側のカラムにメインメニューが並んでいるレイアウトで、2.6よりも明らかに整理された印象です。色使いなどもずいぶん洗練されました。ただし、もちろん慣れるまでに要する時間は人によるでしょう。

で、新機能としては、ダッシュボードに表示される要素を変更する「スクリーン・オプション」が個人的にはありがたい。
WordPressにログインすると「ダッシュボード」という画面になり、記事を書いたり、過去の記事を編集したり、ブログのタイトルを変更したり、といろいろな作業を行えるのですが、WordPressに関するニュースだとかも表示されて、少々鬱陶しかった。というか、一般的なユーザーにとって、不必要な要素がいろいろと表示されてしまうわけです。
で、今回、それらを変更できる、つまりある部分は表示するし、ある部分は表示しないという選択ができるようになりました。それが「スクリーン・オプション」です。

スクリーン・オプション(クリックで拡大します)

スクリーン・オプション(クリックで拡大します)

おそらく普通にブログを書いていこうというユーザーの場合、「WordPress Development Blog」とか「Other WordPress News」なんていう欄は不要でしょう。そういうのを個別にオン/オフできるようになりました。(^^)

★ Post Script ★
今週の無料曲(来週火曜日まで?)「Sky Pocket」は、いわゆる男声版Perfumeっぽい系統のです。心地よいサウンドですね。

Tes - Sky Pocket (スカイポケット) - EP - cosmic star

無料ではないですが、「cosmic star」という曲が有名らしいです。一瞬、本当にPerfumeかと思っちゃいそうですね。