WordPressで構築したサイトに.htaccessでアクセス制限をかけた際、サイトのトップページ以外が404エラーで表示されない時の対処メモ。パーマリンクを再度設定し直すと何故だか直る。一度別のパーマリンクを選択して更新、そしてもう一度もとに戻す。毎度思うけど、なんですかねこれ。こういうもんなの?

wordpress
ブログなどでカテゴリー一覧を表示させるときに便利なwp_list_categories()のメモ。文字列の箇条書きリストでカテゴリーを出してくれるけど、その時リストの外側に”カテゴリー”という文字が吐き出されてこれが何とも邪魔だったりする。消し方は、title_liパラメータを入れてやるだけ。その他にも色々と使えそうなパラメータが多数存在します。

<?php wp_list_categories("title_li="); ?>
出力結果はこんな感じ。
<li class="cat-item cat-item-8"><a href="http://sugiyamayusuke.org/log/category/event" title="eventについてのエントリーです。">event</a>
</li>
<li class="cat-item cat-item-11"><a href="http://sugiyamayusuke.org/log/category/journal" title="journal に含まれる投稿をすべて表示">journal</a>
</li>
<li class="cat-item cat-item-9"><a href="http://sugiyamayusuke.org/log/category/memo" title="memoについてのエントリーです。">memo</a>
</li>
<li class="cat-item cat-item-12"><a href="http://sugiyamayusuke.org/log/category/mono" title="mono に含まれる投稿をすべて表示">mono</a>
</li>
<li class="cat-item cat-item-13"><a href="http://sugiyamayusuke.org/log/category/music" title="music に含まれる投稿をすべて表示">music</a>
</li>
<li class="cat-item cat-item-7"><a href="http://sugiyamayusuke.org/log/category/works" title="worksについてのエントリーです。">works</a>
</li>

wordpress
記事に画像アップロードしてもまったく表示されないという現象に見舞われました。よくよく見てみると、リンクURLの部分にhttp://example.org/?attachment_id=22なるものが表示されていました(何をしたというわけでもないけど実際は何らかのことをしているのを忘れているだけな気がする)。

このせいで画像が表示されていなかった様。画像は表示されないのはURLを書き換えれば解決したけど、attachment_idページが意図せず生成され、尚且つ削除もできず困っていました。さらに調べてみるとattachment_idページをそのままにしておくと、このページに対してスパムがやってくるとのこと。それはなんとなく黙ってはいられません。

このattachment_idを非表示にする方法ですが、以下の手順で可能だそう。フォーラムを参考にさせていただきました。

1.以下の内容を記述したattachment.phpを作成

<?php @header(“HTTP/1.1 404 Not found”, TRUE, 404); ?>
2.WordPressがインストールされているテーマのフォルダの中にアップロード

この時までattachment_idという存在を知らなかったのでいい勉強になったけれど、そもそもどうしてリンクURLに突然attachment_idが表示されるようになったのかは未だに分かりません。

wordpress
WordPressで何らかの親カテゴリーに属する子カテゴリー名だけを表示させるときのメモ。
こちらの記事を参考にさせて頂きました。
[WordPress]カテゴリを複数選択して投稿した際に、任意の指定したカテゴリ名のみを表示

以前、子カテゴリー名のみををすんなり表示できるテンプレートタグが見当たらなかったので、以下のようにしました。

<?php $cat = get_the_category(); $cat = $cat[1]; { echo $cat->cat_name; } ?>
複数選択したカテゴリー(親カテゴリーと子カテゴリーひとつ)の配列の2番目を取得し、表示させるというもの。その時はこれで意図するような表示ができたのでカテゴリーの並びは親カテゴリー→子カテゴリーの配列になるものだと思っていたけれど、それはたまたまだったようです 汗。色々と試した結果、どうやらIDは関係なくカテゴリー名が「ひらがな」「カタカナ」「漢字」「アルファベット」などの言語と、その文字数に関係していそうな気がしてきました。何が正解かは未だはっきりしていません…。

別の方法を探していたときに参考にさせて頂いたものが以下の内容です。
<?php
  if(have_posts()) :
    while(have_posts()) :
      the_post();
      $categories = get_the_category();
      foreach($categories as $category) :
        if(cat_is_ancestor_of(7, $category))
          echo $category->cat_name . ' ';
      endforeach;
    endwhile;
  endif;
?>

wordpress
テンプレートタグ/comments numberを使ってコメント数を表示するとき、パラメータの書き方をいっつも忘れてしまうのでもういい加減メモしておきます!
例)

<?php comments_number('no comment', '1comment', '%comment'); ?>
左から「コメントなしの場合」・「1件の場合」・「複数の場合」の表示方法。

wordpress
WordPressにて本文の抜粋を取得する際にテンプレートタグthe_excerpt。これを使用すると文末に[...]が表示されるけれど、個別記事へのリンク機能は果たしていません。今回は[...]にパーマリンクを付ける方法を忘れないうちにメモしておきます。

調べてみたところ方法は多数存在するようで、いくつか試してみました。それらはほとんどがfunctions.phpに関数を記述するというものでしたが、何故かどれも上手くいかず…。どうしたものかと考えた倦ねた結果、WP Multibyte Patchプラグインの中身を触ってみることに。(作者様、申し訳ありません…)無理矢理なんだとは思うけれどなんとかこれでいけました。

201行目辺りに記述してあるexcerpt_moreについての一文

$excerpt_more = apply_filters('excerpt_more', ' [...]');

$excerpt_more = apply_filters('excerpt_more', '<a href="' . get_permalink() . '">' . __('  ...') . '</a>');
とすることで成功。


2011年4月5日現在
※WP Multibyte Patchプラグインのバージョンアップに伴い、内容が変更されているようです。
$excerpt_more = apply_filters('excerpt_more', $this->conf['excerpt_more']);
の部分を
$excerpt_more = apply_filters('excerpt_more', '<a href="' . get_permalink() . '">' . __('  ...') . '</a>');
これでうまくいくと思います。

wordpress
初心に返ってWordPressを導入する際の基本的な過程と、導入後しておいたほうがいいかなと思う事をまとめておきたいと思います。少々長くなりそうですが。

1.まず、サーバーを借りる
heteml
現在の日本語WordPressのバージョン2.9.2(英語版は先日、3.0「セロニアス」がアップデートされました。)を使用する際はPHP バージョン 4.3 以上、MySQL バージョン 4.1.2 以上の要件を満たすサーバが必要です。サーバをレンタルする際はこの要件を確認してからにして下さい。paperboy&co.が提供しているレンタルサーバロリポップhetemlには先日WordPress簡単インストールという機能が登場したので、とりあえずWordPressを触ってみようという方にとっては比較的楽に導入できると思います。一度簡単インストールを触ってみましたが、本当に簡単であっという間にインストール出来ました。

2.データベースの作成
レンタルサーバでデータベースを作成します。作成方法は、各レンタルサーバに説明があると思います。

※補足 独自ドメインを使う
サーバを借りるだけでもWordPressを始めることはできますが、その際URLは各レンタルサーバ専用のURLを使用することになります。例えば、ロリポップならhttp://○○○.lolipop.jp、さくらサーバならhttp://○○○.sakura.ne.jpなど。これでも問題なくブログを始められますが、折角なら自分専用のURLを使って始めたいところです。ドメイン取得サービスで好きなドメインを取得し、それをサーバに反映させます。これでOKです。方法は各レンタルサーバのサイトに記載されていると思います。

3.WordPressをダウンロードする
WordPressのzipファイルを本サイトからダウンロードし、解凍します。
wp
4.WordPressをサーバにアップロードする
FTPソフトを使用して、サーバにアップロードします。ぼくの環境はMacならCyberduck、windowsならFFFTPを使わせてもらっています。

5.アップロードが完了したらそのURLにアクセスしインストール
例えば、WordPressをサーバー/blogというディレクトリの中にアップロードした場合は、http://example.com/blogにアクセスします。すると、データベース情報を入力する画面が現れるのでそこに先ほど作っておいたデータベースの情報を入力します。その後はブログのタイトルと検索エンジンに登録するか否かを決定したらインストール終了です。

ブログタイトルは後で変更できるのでご安心を。ここまでで一通りの導入作業は終了ですが、その後少なくともしておいた方がいいことまでメモしておきます。

6.別の管理者を新規で作成
デフォルトの管理者adminをそのまま使用するのは少々危険なので、これから使っていくアカウントを別に新たに作成します。管理画面のユーザー>新規追加から行います。新しいアカウントができたら一度ログアウトし、新アカウントでログインします。そしたら、adminは消してしまいましょう。この時、これまでの記事などを管理する権限を新アカウントに継承させておいてください。(この作業をする前に記事を書いている場合のみ)

7.最低限入れておいた方がいいプラグインを入れる
初期段階で入れておきたいプラグインを色々あるとはおもいますが少しだけまとめておきます。 

Akismet
スパム対策のプラグイン(AkismetのAPIキーが必要です。無料で取得できます。)
WP Multibyte Patch
日本語版 WordPress のマルチバイト文字の取り扱いに関する不具合の累積的修正と強化を行うプラグイン
brBrbr
キーボード入力の改行を反映させる為のプラグイン
Google XML Sitemaps
ロボット向けのXMLサイトマップ作成プラグイン(ちょっとしたSEO対策)
Ktai Style
携帯電話対応 (5キャリアおよびスマートフォン対応) にするプラグイン(対応させたい場合)
WordPress.com Stats
簡単なアクセス解析をしてくれます。(こちらもAPIキーが必要です。)


他にも色々ご意見はあるとは思いますが、これくらいでいいかと思います。さあ記事を投稿してみましょう。
以上簡単ではありますが、終了です。何か間違いがありましたらお知らせくださいませ。 
 
関連エントリー 
WordPressの「改行」についてのメモです。 
WP Multibyte Patch  
WordPress.com Stats導入における注意点。

wordpress
WordPressで記事を編集する際に困ったことがあると思います。改行です。複数行の改行を行いたいとき、1行以上はどうしても反映してくれません。それがものすごく不便というか気持ち悪いというか。これは、XHTMLの文法上、brを2つ以上連続で使用することを非推奨としているので、WordPressでそういう仕様にしているみたいです。

WordPressを使い始めた当初この件に直面したのですが、brBrbr というプラグインが解決してくれました。今更ですがメモにしておきます。これを使用することで1行以上の改行が可能になります。

brBrbr
こちらのサイトからzipファイルをダウンロードし、wp-content/pluginsにアップロード&有効化してください。その後、記事を編集する際、ただ改行するだけです反映されます。これでストレスを感じなくなり、心地よく記事が書けるようになりました。

wordpress
お問い合わせフォームを簡単に設置できるWordPressのプラグイン、ContactForm7の実装についてのメモです。内容は、お問い合わせ先を複数設置して、その送り先を選択させるというものです。
ladiobutton
今回のお問い合わせフォームの場合ラジオボタンの選択項目を、福岡・佐賀・長崎・熊本・鹿児島・宮崎と6つ用意し、更に福岡・佐賀宛のメッセージは福岡のメールアドレスに送信。長崎宛のメッセージは長崎のメールアドレスに送信。熊本・宮崎・鹿児島宛のメッセージは熊本のメールアドレスに送信。佐賀・宮崎・鹿児島の専用メールアドレスがない場合です。少し解りづらいので図にしてみます。

ladiobutton2
といった状況です。そこでこの場合当然必要となってくるのが、

福岡(例 fukuoka@sugiyamayusuke.org)
長崎(例 nagasaki@sugiyamayusuke.org)
熊本(例 kumamoto@sugiyamayusuke.org)

の三つのメールアドレスです。それらのメールアドレスをフォームタグを使用してフォームテンプレートに入れこんであげます。


[radio your-recipient "福岡|fukuoka@sugiyamayusuke.org" "佐賀|fukuoka@sugiyamayusuke.org"
"長崎|nagasaki@sugiyamayusuke.org" "熊本|kumamoto@sugiyamayusuke.org"
"宮崎|kumamoto@sugiyamayusuke.org" "鹿児島|kumamoto@sugiyamayusuke.org"]


中身の記述方法としては、ラジオボタンの項目とそのメールアドレスをパイプ(|)で区切ります。そしてそれらを半角スペースで繋ぐとOKです。この方法は、ラジオボタンだけでなくドロップダウンメニューでも使用可です。

wordpress
今回、フォームを作る必要があったので、初めてWordPressのプラグインContactForm7を使用させて頂きました。ということで、まず実験的にぼくのブログに実装してみようと試みた際のメモです。

1.ContactForm7をダウンロードし、解凍します。
2.wp-content/wp-plugins/以下にフォルダごとコピーしアップロードします。
(※wordpress管理画面のプラグインの新規追加から簡単インストールする事も可能です。)

3.プラグインの管理画面でContactForm7を有効化します。
4.その後設定画面でフォーム作成します。
contactform7
基本的にデフォルトの設定で使用可能ですが、欲しい機能を追加したり、見た目のデザインを変更したりと、幅広い用途に合わせたオリジナルのフォームが作成できます。今回はとりあえず、このような形に落ち着きました。フォームに関する詳しい設定内容や、デザインのカスタマイズ方法はまた後日Contact Form 7実践編にてメモすることにします。ひとまず出来てよかったです。とっても使いやすい、便利なプラグインでした。

wordpress

<?php the_content(); ?>
<?php the_excerpt(); ?>

これらはWordPressにて本文を取得する際に使用される関数です。今回はthe_excerpt()タグについて。このthe_excerpt()タグは、投稿記事の抜粋を、文末に [...]をつけて表示します(※デフォルトでは)。ここで注意する点は、

・投稿作成/編集画面 の抜粋文入力欄に記入していなければ、投稿記事の最初の 55個の単語を表示すること
・ループ内のみ使用可能ということ
・[...](三点リーダー)は記事の続きを読むのリンク機能は果たしてないこと


※2010.08.26更新
the_excerptの[...]にパーマリンクを付けるで方法を紹介しています。

このタグを使い投稿記事の抜粋を取得し、更に投稿記事内の画像をサムネイルで表示させたい時に便利なプラグインがThumbnail For Excerptsです。投稿内に複数の画像を張ってる場合は最初の画像がサムネイル表示され、単一記事へのリンクになにもなります。Thumbnail For Excerptsをアップロード、有効化し、管理画面より各種設定を行えばOKです。
thumbnailForExcerpts

wordpress
WordPress の開発者およびユーザーの多くはマルチバイト文字以外の言語圏の人であるため、日本語の取り扱いが考慮されていなかったり、不十分な箇所がまだあります。そこで重要なのがWP Multibyte Patch。WordPress日本語版のマルチバイト文字に関する修正を行うプラグインです。メール送信、トラックバック受信、ピンバック受信、検索等で発生する障害に対して対策を行ってくれるらしいです。WPを触りだした当初(他者制作テンプレート使用)、このプラグインが有効・無効どちらでも何ら影響がなくあまりピンと来なかったのだけど、今回テンプレートを制作する上で有難みを感じたのです。WP日本語版に初めから同梱されている理由をここで理解することになりました。

日本語・マルチバイト特有の問題には以下のものが挙げられます。

—————————————————————————————————
■文字コードに関する問題

UTF-8 以外の文字コードからのトラックバックの文字化け
現在の WordPress 英語版・日本語版は UTF-8 を標準にしていますが、その他(例: EUC-JP や Shift_JIS)の文字コードを使っている他のレンタルブログサービスやブログツールなどからトラックバックを受けると文字化けが発生します。
UTF-8 以外の文字コードからのピンバックの不具合
UTF-8 以外の文字コードを使っている他のブログからピンバックを受けると本文の抜粋が空になります。
メールの文字化け
デフォルトでは UTF-8(8ビット)でメールを送信するため、ISO-2022-JP の携帯メールやメールクライアントでの文字化けが発生します。
マルチバイトファイル名の変換
ファイル名のマルチバイト部分が変換されずにアップロードされます。
—————————————————————————————————
■文字数カウントに関する問題

抜粋の不具合
単語間のスペース区切りで文字数をカウントしているため、本文が日本語の場合に自動抜粋がうまく短縮されません(手動抜粋、ティーザーには影響なし)。
投稿画面の不正な単語数カウント表示
日本語で本文を書いた場合、投稿画面の下部にリアルタイムで表示される単語数カウントが正しく計算されません。
—————————————————————————————————
■日本語特有の文字に関する問題

検索での全角スペース無視
単語間のスペース区切りで文字数をカウントしているため、本文が日本語の場合に自動抜粋がうまく短縮されません(手動抜粋、ティーザーには影響なし)。
投稿画面の不正な単語数カウント表示
検索キーワードとして入力した日本語の全角スペースがスペース区切りとして認識されません。
—————————————————————————————————

というような問題があり、マルチバイト言語圏では欠かせないプラグインがWP Multibyte Patchのようです。ぼくが有難みを感じた瞬間についてはまた後日紹介します。
参照:WordPress日本語EastCoder;