Home > WordPress

"WordPress" の記事一覧

WordPressのページ機能で親ページだけを取得する

WordPressをCMSとして使おうとしています。
ページ機能を主として構築しているのですが、WordPressはページに親子関係を持たせることができるため、親ページは親ページ用のテンプレートを使い、その親ページの中に子ページの一覧(タイトル・更新日時・抜粋あたり)を出すつもりです。
擬似的にページをカテゴリ分けしているイメージです。

そのテーマを作っている最中に以下のような要求に遭遇しました。
「トップページに親のページだけを出したい。」

テンプレートタグの、get_postsを使えばできるかなと思ったのですが、親ページだけを取り出す、というのはどうも無理なような気がしたので、あらかじめ親ページ(親ページ用テンプレートを使っているページ)のIDをクエリで取得しておくという技で対処しました。

親ページ用のテンプレートは parent.php という名前です。


<?php
// クエリを送り、各コンテンツの親だけ取得する
$qstr = "select ID from wp_posts
left join wp_postmeta on wp_postmeta.post_id=wp_posts.ID and
meta_key='_wp_page_template'
where post_status='publish' and post_type='page' and
meta_value='parent.php'";
$parent_ids = $wpdb->get_col($qstr);
// 取得したIDを指定してget_posts
$posts = get_posts(
    'post_type=page&numberposts=10&include='.implode(',', $parent_ids)
);
?>
<?php foreach ($posts as $post): ?>
    <?php echo $post->post_title; ?>
<?php endforeach ?>

こんな感じでできました。もっとスマートなやり方があったらぜひ教えてください。

参考:Function Reference/wpdb Class

ローカルにMAMPを使ってWordpressを入れようとしたらはまった

そろそろ少しこのブログのテーマでもいじろうかなと思い、ローカルのMAMP環境にこのブログを設置しようとしたところ、はまりました。

ローカルにWordpressのテスト環境を用意するときの手順としては、

  1. データベースのバックアップ
  2. ファイルのバックアップ
  3. バックアップされたダンプファイルの修正
  4. ローカルのデータベースへリストア
  5. ローカルにファイルを展開
  6. wp-config.php

と、大雑把に書くと以上のような手順になる訳ですが(apacheのバーチャルホストの設定も必要に応じて。)、バックアップされたダンプファイルの修正でとちっていました。

MAMP環境だとデフォルトでMySQLのポートが8889、Apacheのポートが8888になるのです。wp-config.phpにてデータベースのホストを指定する際に”localhost:8889″とするところまではちゃんとやったのですが、ダンプファイルの置換を、本来は”blog.starrybells.net”を”blog.starrybells.local:8888″としなければならないところ、後ろの”:8888″を忘れていました。

これで1時間以上はまってしまった・・・。

WordPress 2.3にアップデート

WordPressを2.3にアップデートしてみました。

アップデート作業は特に問題なく完了しました。ちょっとUltimate Tag Warriorでつけていたタグをインポートする作業が、管理画面のどこからできるのか探してしまいましたが、管理→インポートの中のリストをよく見たらありました。

あとは、標準でタグ機能が追加されたことに伴って少しテンプレートを編集してみました。(自分が)混乱しちゃうからカテゴリーは使わないことにして、全部タグで管理。サイドバーにもタグ一覧を載せて、そっちで特定分野の記事は読んでもらおうかなと。

今回のアップデートの際に参考にしたサイトは以下の通りです。ありがとうございました。

で、新規に導入したプラグインは以下の通りです。(どちらもタグ機能関連)

Recommended Tags
記事投稿時におすすめタグや既に存在するタグの一覧を表示してくれるプラグイン。
Advanced Tag Entry
タグの管理フォームを投稿画面に追加してくれるプラグイン。

アクセス解析を導入

今日はこのブログのカスタマイズにずいぶんと時間を使っています。

テーマの手直しは、現在ローカルにてCSSやJavaScriptの作成中なので、こちらはほとんど変わっていません。ですが、今は珍しく(というか久しぶりに)こういう作業に対してやる気が出ているため、連休中にはデザインのアップデートが完了するのではないでしょうか。

そして今日ちょっと苦戦してしまったのがアクセス解析の導入でした。このブログを設置したときにGoogle Analyticsはちゃんと導入してあるのですが、リアルタイムにアクセス状況も見たいな、と思い、探し始めました。

候補としては

  1. WordPressのプラグイン(WP-SlimStats
  2. Php-Stats
  3. PowerPhlogger
  4. Mogura

の4つを考えていました。

僕がアクセス解析に求めることは、ユーザーがどのようにしてページをたどっていったのか、その遷移がわかることです。そしてもう一つ重要なのが自分のアクセスを除外してくれること。あとは見やすさ。なんとなくごちゃごちゃしているとどうしてもひいてしまいます。そういう、とても個人的で主観的な理由から、今回選んでみたのは4番のMoguraです。

WP-SlimStatsはWordPressのプラグインなので、WordPressの管理画面から解析を見られて便利そうだったのですが、ちょっと使い勝手が好みではないのでやめました。同じ理由でPowerPhloggerもやめ。 Php-Statsは以前使っていて、見た目も機能も気に入っていたのですが、日本語化パッチを入れないと検索キーワードが文字化けしてしまうこと、そしてその日本語化パッチの配布場所が現在みつからなかったことが原因で今回は見合わせました。

Moguraは見た目もすっきりしていてわかりやすく、機能的にも十分です。ただ、問題点が一つだけありました。パーマリンク設定(mod_rewrite)をしているせいだと思いますが、アクセスされたパスが全部”/index.php”として記録されてしまうのです。仕方ないのでこれはソースに手を入れて自分なりに改造しちゃいました。w.php22行目からを以下のように修正。

//Path
$path = $_SERVER["REQUEST_URI"] ? $_SERVER["REQUEST_URI"] : $_SERVER["SCRIPT_NAME"];
$path = ereg_replace(ereg_replace("/mogura/", "", MOGURA_PATH), "", $path);
$path = str_replace ("%", "_P_", $path);
$path = str_replace ("&", "_A_", $path);

これで今のところ、僕の環境では正しく動いてくれているみたいです。唯一、日本語の検索ワードでブログ内検索をしたときにパスの検索クエリが文字化けしているのですが、タイトルが正しく取れているため問題ないと判断し、そっちは直していません。

9/22 23:12追記
きっと作者さんの意図があるんだろうと思いつつも、さらにwritelog.phpの方もいじってしまいました。

// 266行目の後に追加
$w3a_buf["path"] = str_replace ("_A_", "&", $w3a_buf["path"]); //266行目
$w3a_buf["path"] = mb_convert_encoding(urldecode($w3a_buf["path"]), "EUC-JP", "UTF-8");
// 295行目の後に追加
$w3a_buf["ref"] = str_replace ("_A_", "&", $w3a_buf["ref"]); //295行目
$w3a_buf["ref"] = urldecode($w3a_buf["ref"]);

さらにplugin/track.phpの219行目からを以下のように修正。

}else{
	if($row["ref_q"]) $row["ref"] .= "?".urlencode($row["ref_q"]); //この行を修正
}

エンコーディングとかパスが決め打ちですし、あまり他の人の役には立たないかもしれませんね。

ブログのみ先行公開

初めての記事を書きます。

このサイト、starrybells.netのメインコンテンツとしては、パソコン初心者向けのパソコン講座のようなものを考えているのですが、こちらのブログではサイト作成中に思いついたこと、技術的なメモ書き、その他趣味のことなど雑多に書いていってみようと思います。

今回新しいサイトを作るにあたって、苦労したことが以下の2点です。

  1. ドメイン&サーバーをどうするか
  2. CMSは何を使うか

まず1番の『ドメイン&サーバーをどうするか』という点についてですが、あたらしもの好きの性格もあり、最近サービスを始めたばかりのCoreServerを使ってみることにしました。ドメイン取得はもちろんValue Domainで。現在はさくらのレンタルサーバーのスタンダードプランを使用しているのですが、CoreServerの15GBという膨大な容量と、CORESERVER.JP(コアサーバー)は、PHP+MySQLの快適性を重視した大容量の次世代レンタルサーバーサービスです。という文言に惹かれて契約してみました。金額もさくらのスタンダードプランと一緒ですしね。

ただ、使うサーバーは割とあっさりと決まったのですがドメイン名がなかなか決まりませんでした。結局語感で適当につけてしまいました。SEOも何もあったもんじゃないですw

そして2番の『CMSは何を使うか』に関してなのですが、実はまだまだ悩んでいます。ブログにWordPressを使うことは確定です。メインのコンテンツの方をMODxにするか、それともMovableTypeにするか、はたまたJoomlaにしてみるか、悩んでいます。中でも一番惹かれているのがMODxなのですが・・・。もしかするとメインの方もWordPressにしてしまうかも・・・。これが一番使い慣れている上に、ブログも静的ページも簡単に作れるので。

・・・というわけで、まだまだ悩み中で方向性の定まらないサイトですが、システム的な悩みが解決したら、コンテンツはどんどん付け足していけると思います。メインの開始までしばらく、マニアックにはなりますがこちらのブログの方をどうぞよろしくお願いします。

Home > WordPress

検索
RSSフィード
スポンサード リンク

Page Top