Facebookページにタブを追加する方法です。Facebookの仕様はコロコロ変わるので、あくまでもこの記事を書いている時点(2012年1月)での方法です。

1.開発者登録

とりあえず省略します。
あとで書き足すかもしれません。

2.開発者サイトでアプリを新規作成

Facebook開発者サイトの上部メニュー「アプリ」をクリックしてアプリ画面へ。
https://developers.facebook.com/apps

「新しいアプリケーションを作成」をクリックしてアプリ作成を開始します。
「App Display Name(表示名)」は自由に分かりやすい名前を、「App Namespace(名前空間)」はシステム内で扱われる識別子になるので半角小文字もしくは記号で入力します。

3.アプリの基本設定

アプリを新規作成すると基本設定画面に遷移します。
「アプリをFacebookに結合する方法を選択してください」の欄で「ページタブ」をクリック。
ページタブの設定項目が開くので、ページタブ名とURL(NoSSL/SSL)を入力します。

4.詳細設定画面でアプリページ作成

左メニュー「詳細設定」をクリックして詳細設定画面へ。
画面の一番下の方の「Facebookページを作成する」をクリックすると、確認ダイアログが開くので「承認」をクリックするとアプリページが作成されます。

この手順の意味がよく分かりませんが、そういうものだと思って作成しておいてください。

5.ページにタブとしてアプリを組み込む

Facebookページにアプリをタブとして組み込むには、javascriptSDKが必要なようです。ただ、その方法はとても面倒なので、ブラウザのアドレス入力欄に以下のURLを入力します。

https://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&display=popup&next=YOUR_URL
YOUR_APP_ID
タブとして追加したいアプリのAPP ID(基本設定画面に載ってます)
YOUR_URL
先ほど基本設定で入力した「Secure Page Tab URL」

ページタブを追加するためのダイアログが開きます。
プルダウンから、ページタブを追加したいFacebookページを選んで追加ボタンをクリックすれば完了です。

管理画面の見た目をカスタマイズしたい場合、テーマフォルダの中に新しくCSSファイルを用意して、管理画面から読み込まれるように設定するのがよいです。

functions.phpに以下を書き加えます。

function my_custom_admin_css(){
  wp_enqueue_style('my-admin', get_bloginfo('template_url') . '/my-admin.css');
}
add_action('admin_print_styles', 'my_custom_admin_css');

※「my_custom_admin_css」「my-admin.css」は任意の名前でOK。

公開されたサイトHTMLソースを見ると、ヘッダー部分に

<meta name="generator" content="WordPress x.x.x" />

のような表記があります。
WordPressを使っていることがバレないように、もしくは使用しているバージョンを判別されないようにするには、functions.phpに以下を書き加えます。

remove_action('wp_head', 'wp_generator');

ログイン時に最上部に表示される管理バーを非表示にする方法。
functions.phpに以下を加えます。

add_filter( 'show_admin_bar', '__return_false' );

さくらVPSでやりたかったこと、それはcicindelaのインストール。

公式ドキュメントに沿って進めつつ下記を参考にしました。
http://wp.serpere.info/archives/1100

途中、PerlモジュールのインストールでRPMforgeが必要になるので導入。
http://centossrv.com/rpmforge.shtml

mod_perlのインストールは下記のコマンドでOK。簡単。

yum -y install mod_perl

ただしこれだけでは動かないので、confファイルの設定は下記を参考にしました。
http://vok.paburica.org/index.php?Apache%2Fmod_perl導入(CentOS)

daemontoolsのインストールは前述のページだと分かりにくかったので以下を参考に。
http://kaiseki-web.lhd.nifs.ac.jp/wiki/index.php/Daemontools

mysqlのrootユーザをパスワード無しログイン不可に設定してあるので、cicindela用データベース作成の際は-pオプションが必要です。
こんな感じ。

perl create_init_sql.pl --db_name=cicindela_db | mysql -uroot -p

公式ドキュメントのデモを実行するためにはperlモジュールのText::CSV_XSが必要。

perl -MCPAN -e shell
install Text::CSV_XS

Cicindelaで遊ぼうと思ったところ普通のレンタルサーバでは難しいようだったので、さくらVPSを借りることにしました(現時点でまだ試用期間中ですが)。
仮想サーバですがroot権限ももらえて好き勝手できるすごいやつです。月額980円。

自由度が高い半面、セキュリティなども自分で考えないといけないので初心者には大変です。とりあえずやったことをメモ。

まず下記を参考にして初期設定。
http://blog.myfinder.jp/2010/09/vpsssh.html

あとはここを参考にしてApache、PHP、MySQLをさくさくインストール。
http://blog.mobf.net/archives/151

バーチャルドメインの設定も。
http://blog.mobf.net/archives/157

nackle.comはcoreserverで運用していますが、一部のサブドメインだけさくらVPSで運用することにします。つまり特定のサブドメインのみさくらVPSのIPを指すようにすればOKなので、僕の場合は既存のDNS設定に「a hoge xxx.xxx.xxx.xxx」だけ追加すればOK。

SSHのポートも変更。デフォルト(22番)のままだと危険らしい。
http://akabeko.sakura.ne.jp/blog/2010/09/さくらのvps-を使いはじめる-2/

さらにiptablesを設定して、開放するポートを限定。
http://akabeko.sakura.ne.jp/blog/2010/09/さくらのvps-を使いはじめる-3/

とりあえず今のところそんな感じ。

巷で最近話題のZen-Coding。
Dreamweaverでも使えます。

Downloads – zen-coding – Project Hosting on Google Code
http://code.google.com/p/zen-coding/downloads/list

「Zen Coding for Dreamweaver」というリンクがあるので、一番新しいバージョンをダウンロード(現時点で最新はv0.6)。
ダウンロード後、解凍したらxmpファイル(拡張機能ファイル)が出てくるので、これをExtension Managerで開いてインストールしてください。Dreamweaverを再起動したら、普通にコードエディタでZen-Codingが使用できます。

なお、展開コマンドは「Ctrl+,(コンマ)」ですのでご注意ください。

ループまとめ

ワードプレスでのサイト構築はループに始まりループに終わると言っても過言ではありません。
というわけでループについて簡単にまとめておきます。

基本ループ

<?php if(have_posts()): while(have_posts()): the_post(); ?>
//ほげほげ
<?php endwhile; endif; ?>

普通のブログであれば、大抵はこれだけで済みます。
現在のページ(トップページ、カテゴリページなど)に適合した投稿内容を表示してくれます。

have_posts()
表示すべき投稿記事があれば「true」を返し、なければ「false」を返します。表示対象となる投稿記事はページに依存します。
the_post()
投稿情報を読み込み、その情報をカスタムタグ(the_contentなど)で使えるように準備します。

基本ループをカスタマイズ

基本ループで呼び出される投稿は、デフォルトではそのページ(トップページ、カテゴリページなど)に依存しますが、基本ループの直前にこのコードを記述すると投稿を呼び出す条件が変更されます。

<?php query_posts($query_string.'&posts_per_page=5&cat=1,3'); ?>

上記だと、カテゴリID1または3に属する投稿が5件毎に呼び出されます。

query_posts()
基本ループで呼び出す投稿の条件(デフォルトはページに依存)を指定する。
$query_string
主に現在の表示ページ数などを表わす文字列。ページナビゲーションを利用する場合などに必須なので、特に問題が無ければ最初から付けておくとよいです。

ただし、この方法は条件分岐タグ(is_home()、is_category()など)の動作に影響を与えるので注意が必要です。

マルチループ

自由に投稿一覧を表示させたい場合は以下のループを使用します。

<?php $myposts = get_posts('numberposts=5&category=1'); ?>
<?php foreach($myposts as $post): ?>
<?php setup_postdata($post); ?>
//ほげほげ
<?php endforeach; ?>
get_posts()
ページに関係なく任意の投稿記事を読み込み、その情報を使えるように準備する。対象となる投稿記事は引数で指定する。
setup_postdata()
投稿データをカスタムタグ(the_contentなど)経由で呼び出せるように準備する。基本ループの「the_post()」に相当。あるいはこれは使用せず、「<?php echo $post->ID; ?>」という風に投稿データを直接呼び出してもよいです。

細かい挙動については、また個別にエントリを書こうと思います。

カテゴリページにて、そのカテゴリの記事一覧を表示する方法。
特殊な状況下ではこのような方法も有効かと思います。

ポイントは「get_query_var(‘cat’)」で現在のカテゴリIDを取得できるところでしょうか。あまり知られていないような気がしますが、僕が知らなかっただけかもしれません。

<ul>
<?php
if (have_posts()) :
$cat_id = get_query_var('cat');
$query = 'cat=' . $cat_id. '&showposts=99';
query_posts($query) ;
while (have_posts()) : the_post();
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
</ul>

WordPressは携帯電話からメールで更新することもできます。

Ktai Entry(メール投稿プラグイン)
http://wppluginsj.sourceforge.jp/ktai_entry/

  1. GMailのアカウントを新規取得。このメールアドレスに送信すると記事が投稿されるようにします(GMail以外のメールアドレスでもよいのですが、GMailのメールサーバは絵文字を処理してくれるので便利です)。
  2. GMail>設定>メール転送と POP/IMAP 設定の「POP ダウンロード」で「今後受信するメールでPOPを有効にする」を選択します。
  3. プラグインのファイル一式をwp-content/plugins/にアップする。
  4. WordPress管理画面>プラグインで「Ktai Entry」を有効にする。
  5. WordPress管理画面>設定>メール投稿で「投稿受付メールアドレス」にGMailのメールアドレスを入力する。
  6. WordPress管理画面>設定>投稿設定で「メールでの投稿」にGMailの情報を入力する(メールサーバは「ssl://pop.gmail.com」、ポートは「995」)。
  7. 上記設定欄の下にある「メール投稿用カテゴリーの初期設定」も選択しておく。
  8. WordPress管理画面>ユーザで投稿用ユーザを追加する。その際、投稿する携帯電話のメールアドレスをユーザのメールアドレスとして設定しておく。
  9. cronで定期的にwp-content/plugins/ktai_entry/retrieve.php(メールをチェックするプログラム)を実行するように設定する。

以上で完了。最後のcronは設定しなくてもよいですが、その場合、投稿が反映されるタイミングが「誰かがサイトにアクセスしてからn分後」という微妙なものになります。
その他、詳細はKtai Entryの公式サイトまで。