‘wordpress’ タグのついている投稿


日記代わりにつけているブログを、さらにfacebookにリンクをシェアしている。
いままではOGP設定していなくても本文中の画像を拾ってサムネイルにしてくれていたのが、ここ最近うまく拾ってくれないので、ざっくりOGPを吐き出すようにした。

そういうプラグインもあると思うのですが

自分用のブログで、管理をスマートに分かりやすく、という風なこともなく、分かれば良いレベルなので、カスタムフィールドに直接書いたものをテンプレートに吐き出すことにする。
やることは、ページのタイトルや本文とほぼ同じ。

こういうこと。

テンプレートをちょっと直す

header.phpを直す。直したところは以下のところ。

<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?> xmlns:og="http://ogp.me/ns#">

<!-- OGP対応で追加 -->
<?php
$image       = get_post_meta( $post->ID, "IMG", true);
$description = get_post_meta( $post->ID, "DESC", true);
if($image) {
?>
>meta property="og:image" content="<?php echo $image; ?>">
<meta property="og:title" content="<?php wp_title( '|', true, 'right' );echo "都市文化生活"; ?>">
<meta property="og:url" content="<?php echo the_permalink();?>">
<meta property="og:description" content="<?php echo $description;?>">
<?php
}
?>

なんてことは無い、カスタムフィールドのOGPデータがあったら、それにそってOGPのヘッダーを出力しますよというもの。


サイトリニューアルのお手伝いをした。

主にトップページ回りの機能部分を担当。

このサイトの他にNEWSとブログを他ブログサービスで既に運用していて、そこからRSSを読み込んでダイジェストをトップページに表示している。

スライドショーの画像管理をwordpressの管理ページ上に追加した。スライドショーそのもののwordpressプラグインもあるが、それは使わずに画像の管理を独立して実装し、スライドショー自体はSkitterを使った。jQueryのプラグインならば何でも対応出来る。


公開ボタンをうっかり押すと公開されてしまう

当たり前の話といえばそれまでだけど、公開ボタンをうっかり押して公開されてしまケースがある。ちょっとしたブログなら問題ないのかもしれないけれど、公式サイトなんかでは数分間だけでも公開状態になってしまうと色々とややこしいことになりやすい。

うっかりしなければいい、という簡単な話でもあるけれど、確認ダイアログを1つ挟めば、よりミスしにくいよねーということで入れてみた。

決め打ちでjavascriptを入れる

対処は以下のコードをテーマのfunction.phpに追加するだけ。ダイアログのメッセージが日本語の場合には文字コードをUTF-8で保存することに注意。

function admin_edit_confirm() {
	echo '
<script>
  jQuery("#publish").live("click", function(e){
    if (!confirm(jQuery("#publish").val() + " is OK?")) {
      jQuery("#ajax-loading").hide();
      jQuery("#publish").removeClass("button-primary-disabled");
      jQuery("#save-post").removeClass("button-disabled");
      return false;
    }
 });
</script>';
}
add_action("admin_print_scripts", "admin_edit_confirm", 20);

管理画面ではデフォルトでjqueryが読み込まれるので、それを利用して id=”publish” の clickイベントを追加しているだけ。記事、固定ページ、リンクなどの公開、追加、更新時に確認ダイアログがあがる。
公開ボタンと下書き保存ボタンが変わり、登録中にグルグル回る画像が出る部分、確認ダイアログでNOの場合に元に戻す処理がベタ打ちなのがちょっと…だが、ひとまずということでお茶を濁した。

ここからは脱線話

wordpressもそうだけど、最近のウェブサービスでは確認画面が無いケースが多い。gmailなんかも送信内容確認画面が無い。
その一方で今まで携わってきた色々な仕事では、確認画面があっても「エンターキー2回で更新できます」といった具合の操作で、確認画面見ていますか?本当に確認必要ですか?なんて場面もあったりする。

うっかり操作ミスを防ぐという意味で、操作をちょっと複雑にするというのは方法論としてアリだ。でもその一方で、分かりやすい、操作しやすいという面とのトレードオフなところは、もうちょっと考えないとかなと思う。ここはデザインの領域でもあるから余計に面倒。

最初から確認画面無ければ、その使い方に沿ってしまえる人だって大勢いるわけで、このあたりは本当に難しいところ。

さらに言えば

今回はダイアログを1つ噛ませるだけだったので、そんなに手間ではなかった。どちらかと言えば、見た目のコーディングに近い作業で済んだので「ちょっと見出しの文字を大きめに出来ない?」なんて対応に近かった。それはそれで作業として存在するものの、いわゆるシステムの部分は変更無しで済んだ。

これが「確認画面を表示して、そこで公開するかどうかという風に出来ないか?」だと手間は全然違ってしまう。要求する方としては「確認」なのは変わりないので「うっかり公開するのを避けるために確認一発できるようにしてくれない?」という相談も、話の持っていき方で工数や苦労の中身が変わってしまうというのも、システム開発のややこしさだったりする。

 


wordpressをベースにしたCMSサイト構築のお手伝いをした。

記事コンテンツと管理画面にwordpressデフォルトには無い項目を色々と付け足したり、項目の状況で表示内容を切り替えたりするロジックの追加といった具合。
その他にサイト構築のシステム周辺全般と、それまで運用していたサイトからのサーバ変更やDNS変更にまつわる雑多な対応、旧サイトから引き継ぐコンテンツのURL維持、ちょっとしたデザインの修正や追加、FacebookやTwitterへの外部サービスを利用した記事投稿など、個人事業主ですので出来る部分はさせていただきます!という内容。いつも通りといえばいつも通り。

コンテンツの中身には一切関わっていないのだけど、記事内容が大変豪華で、一読者として、うわっすごいな…と思った次第。

BSフジで毎週放送されている番組情報は定期的に追加され、それ以外のオリジナルコンテンツやイベント情報なども随時追加される。


指定のレンタルサーバにwordpressを設置する作業で少しだけ特殊な例に当たった。
設置するサーバが決まる前に、別のテスト環境で作ったデータを流し込む必要があり、さてサーバの用意が出来たので作業しますか、という段階でmysqlがUNIXソケット設定なのを知った。
用途がローカルからのアクセスだけであれば、UNIXソケットで全然構わないのだけど、phpMyAdminもwordpressもデフォルト設定がTCP/IP前提だったのでちょっとつまづいた。

phpMyAdminの設定

config.inc.php で

$cfg['Servers'][$i]['connect_type'] = 'socket'; //デフォルトでは tcp となっているのを変更する
$cfg['Servers'][$i]['socket'] = 'UNIXソケットのファイル名';

を設定する。

wordpressの設定

wp-config.php で

define('DB_HOST', 'localhost:UNIXソケットのファイル名');

を設定する。
 
デフォルト設定がTCP/IPであるから、全体としてUNIXソケットであることの方が少ないのかも知れない。とはいえ設定変更はそんなでも無いので大きな問題では無かったのだけど、そういえばこういう問題があるなと思った。


あひる社、吉本真一さんのお手伝いで、元佼成学園女子中学高等学校校長の山本喜平太さんのブログサイトを開設した。
きへいた先生と456娘 http://kiheita.com/

基本シンプルな構成で、教育に関してのテキストを定期更新していく予定。
ドラゴン桜にも紹介されたことがある先生ということで、どんな内容になっていくのか、今から楽しみだ。


WebARENA SuitePROでは、自前のサーバをプライマリにして、セカンダリをNTTPC側で引き受けてくれる無料サービスがあった。それがWebARENA CLOUD9では、DNSアウトソーシングという525円/1ゾーンの有料サービスを用意する仕組みに変わっている。

セカンダリの引き受けが無いだけなので、全部自前で運用するつもりでいれば問題は無いのだけれど、他の仕組みと違い、DNSでしくじるとトラブル時のエラーログも何も、そもそもサーバまで辿り着かない状況になるわけで、やっぱりちょっと安心できる他人を頼りたいと思ってしまう。

そこで Dozens を使ってみた。

レコードの追加/変更/削除はすべてブラウザから操作でき、全部で12レコードまで無料で登録可能なサービス。まだベータサービス段階で、ゆくゆくは有料でレコード数追加やTTL変更も可能にしていくとか。当面、12レコードが無料で使えるとのこと。
試しに開発時のテストサーバとして使っているドメインを移行してみた。まだ数日だけれど今のところトラブルは無し。開発用のサーバなので、普段からサーバ名を頻繁に追加削除を繰り返すので、その都度ゾーンファイルをいじらないで済むのは楽。

1点だけハマったのでメモ。

普段メインに使っているブラウザ(Chrome7)では、RecordNameの無いレコードの登録が入力チェックで弾かれて登録できなかった。なので hoge@hogehohge.com 用のMXレコードなどの登録が出来ず困った。お問い合わせページもSendボタンをクリックすると「不正な画面操作です。」というテキストだけのページが表示されて終了してしまった。どうやらお問い合わせは送信されていない模様。

うーん困ったということで、Twitterのアカウント @dozens_jp に確認してみたところ、そうなる端末とそうならない端末があるそうな。Dozens手元のChromeでは再現しないが、他にも報告が来ているとのこと。これまた微妙な状況。
ならばと、IE8で同様の操作をしたら、すんなりレコードの登録に成功した。ChromeではNGでもIEや別ブラウザでは通るというケースのようだ。
IEだけ駄目というケースは今まで何度も遭遇してきたし、自分の仕事でも対処してきたけれどChromeでひっかかるというのは初めてだったので、ちょっと驚いた。

画面上のお問い合わせだけで無く、Twitterからの問い合わせなど、柔軟な対応をしてくれたところも好感が持てた。サービスが比較的単純で、尚且つ専門的であるからこそなのかも知れない。これからのメニュー拡充など、注目していきたい。

追記

Dozensをブログに書いて3レコード貰おうキャンペーンというのをやっていたので、本記事のことをChromeで、お問い合わせから送信してみた。
今回は無事お問い合わせが出来、お問い合わせが完了した旨のメッセージが表示され、入力したメールアドレスに内容の写しが送信されてきた。
そして、本記事のURLを記載しなかったのを、その写しのメールで気づいてしまった…。


フューチャースピリッツ 共用レンタルサーバにデータベースを標準提供でも書いたように、www.mybenjo.net で運用しているwordpressは、mysqlのサーバを別サーバで運用している。現状は、WebARENA SuitePRO V2なのだが、WebARENA CLOUD9へ移行したのでメモ。

そもそもwordpressでmysqlを別サーバで運用するのは、いわゆるレンタルサーバを利用する層では一般的で無く、そういったケースは少ないのだろうけれど、よかったら参考にしてください。

ただし、以下は少しだけテクニカルな内容を一般論的に記述しているので、実施する場合、詳細は各自で検討するか、もしくはお仕事として依頼していただければと思います。

  1. WebARENA SuitePRO V2サーバで mysqldump を使ってwordpress用データベースのデータをエクスポート。

    その際、 –default-character-set=binar の指定で生データとして出力する。

  2. WebARENA CLOUD9サーバで、wordpress用データベースとアカウントを作成。

    その際、webサーバのIPからのみアクセスできるよう設定する。権限などに注意。

  3. WebARENA CLOUD9サーバのデータベースに、 mysql を使ってエクスポートしたデータファイルをインポート。

    その際、 –default-character-set=utf8 を指定してUTF-8のデータとして取り込むようにする。

  4. WebARENA CLOUD9サーバが、外部IPからmysql接続できるよう、ポートマップの設定を実施する。
  5. webサーバからWebARENA CLOUD9サーバへ、mysql接続できるよう、ポートなどの設定を実施する。
  6. wordpressの設定ファイル、wp-config.phpのDB_HOSTをWebARENA CLOUD9サーバのIPに変更する。

WebARENA SuitePRO V2は、mysql4.1.22、WebARENA CLOUD9は、5.0.77とバージョンが異なるが、上記の流れで問題なく移行は完了した。WebARENA CLOUD9の方がメモリが少なく、それ以外でもスペックが異なるので、これから様子を見つつ、チューニング出来るところはいじっていく必要があるかも知れない。


映画サイト ミニパラでは、近日公開情報のページをwordpressを使用して更新している。
映画作品の公開予定日をカテゴリにしてリスト表示することで、その日に公開される作品を一覧表示出来るようにしているのだが、これだと公開予定日が増えるにしたがってカテゴリも増えていくようになってしまう。映画の習慣上、毎週、金曜土曜に公開日があるので、1年で100近いカテゴリが追加される計算になる。
公開予定日をあるだけ表示しておけば、過去の公開日の作品一覧を見ることが出来るという利点はあるものの、カテゴリが増えてしまった分、メインの用途と想定する、直近や前後の日付を探すのが大変になってしまう。なので、過去の日付は切り捨てて、常に30件まで表示するという具合に表示方式を変更した。

対処方法

テンプレートファイルの該当部分を以下のように変更した。

<?php wp_list_categories("title_li=公開予定日&order=DESC&show_count=1"); ?>
 ↓
<?php wp_list_categories("title_li=公開予定日&order=DESC&show_count=1&number=30"); ?>

number=30 の条件を追加することで、カテゴリリストの表示順で上位30件を表示するようになる。

30件が妥当かは考え物

映画の習慣に依存するのだが、公開予定日がかなり先になるケースもある。現在でも来年の3月19日公開予定の作品が登録されている。なので、場合によっては30件でも未来の日付が多くなりすぎて、今週の日付まで表示しきれないケースが出る可能性がある。
なので「先週の公開予定日のカテゴリまで表示」といったロジックで毎回件数を指定するようにするのがベターだと考える。

時間があれば対処したい。

参考:テンプレートタグ/wp list categories

 


wordpress2.9.2のカスタマイズをしていて、ちょっとはまったのでメモ。

状況

原因

遷移先のpostIDを取得する /wp-includes/link-template.php 中の get_adjacent_post で作成されるSQL文中の条件が、post_date < 現在のpostIDのpost_date という風になっており、つまり同時刻に登録された記事は遷移対象となっていなかった。
一括流し込み時には、post_date=now() にしてしまっていたため、流し込む際に同時刻での登録が多発していた。
wordpressの仕組みをすっかり忘れて登録バッチを組んでしまったという単純ミス。

対処

一括流し込みのバッチを、本日の登録記事がある場合には、その日付+1秒から、そうでない場合には、本日の00:00:00から、post_dateを+1秒しながら登録するように修正。
1日に、60秒×60分×24時間=86400件しか商品情報登録が出来ない条件が発生するものの、運用上は問題ないと判断。