昨日は“jopGlobalBlogArchive”を使ってindexページに親ブログ、子ブログ全てのブログの一覧を新着順に表示するようにしましたが、よく見たらカテゴリーが表示されていなかった。

恐らくWordPress2.x用のMUの設定になっているからだろう。

今日はそれを修正してみる。

場所は「jopGlobalBlogArchive.php」の622行からの“the_category()”設定のところ。

ここの問題点はDBの呼び出しに有りと推測(まぁ、設定のほとんどがDBの関数なんで…)。

PHPMyAdminでDBと照らし合わせてみたところ、“sitecategories”と“cat_name”、“cat_ID”なる謎の単語が記述してある。

ただ、これらはMySQLリファレンスなどを参考に読み解いて言ったところ、“sitecategories”はテーブル名、“cat_name”はカラム名ではないかと思えるようになってきた。

“sitecategories”は恐らく“wp●_terms”(●はブログのID番号)テーブルの事だろう。

“cat_name”と“cat_ID”はそれぞれ“name”、“term_id”カラムの事だろ勝手に決め込んで変更。


public static function the_category(){
global $wpdb;
$blog_id = self::$post->blog_id;
$post_id = self::$post->post_id;
$sql = "SELECT `"
. self::$global_prefix . "sitecategories`.`cat_name`
FROM `"
. self::$global_prefix . "jop_global_term_relationships`
LEFT JOIN `"
. self::$global_prefix . "sitecategories`
ON `"
. self::$global_prefix . "jop_global_term_relationships`.`cat_ID` = `" . self::$global_prefix . "sitecategories`.`cat_ID`
WHERE `"
. self::$global_prefix . "jop_global_term_relationships`.`object_id` = '$post_id'
AND `"
. self::$global_prefix . "jop_global_term_relationships`.`blog_id` = '$blog_id'";
$tmpAry = array();
$result = $wpdb->get_results($sql, ARRAY_A);
foreach($result as $key => $value){
$tmpAry[] = $value['cat_name'];
}
sort($tmpAry);
return implode(', ', $tmpAry);
}


↑↑↑上記が元で、下記に変更↓↓↓


public static function the_category(){
global $wpdb;
$blog_id = self::$post->blog_id;
$post_id = self::$post->post_id;
$sql = "SELECT `"
. self::$global_prefix . "terms`.`name`
FROM `"
. self::$global_prefix . "jop_global_term_relationships`
LEFT JOIN `"
. self::$global_prefix . "terms`
ON `"
. self::$global_prefix . "jop_global_term_relationships`.`cat_ID` = `" . self::$global_prefix . "terms`.`term_id`
WHERE `"
. self::$global_prefix . "jop_global_term_relationships`.`object_id` = '$post_id'
AND `"
. self::$global_prefix . "jop_global_term_relationships`.`blog_id` = '$blog_id'";
$tmpAry = array();
$result = $wpdb->get_results($sql, ARRAY_A);
foreach($result as $key => $value){
$tmpAry[] = $value['name'];
}
sort($tmpAry);
return implode(', ', $tmpAry);
}


これでアップしてみたところ、見事にカテゴリーも表示されるようになった。

今回頭を悩ましたのが、DBのタグ“LEFT JOIN”と、“self::$global_prefix”。

特に“self::$global_prefix”に引っかかったが、わかってしまえばな~んだって感じ。

ソースをよく見ると、テーブル名の頭の部分が足りない。

WordPressなら、テーブルの頭に「wp_」が付くはずだが、どれにも付いていない。

「jopGlobalBlogArchive.php」の書出のところには“private static $global_prefix;”という設定がある。

詳しくはよく分からないが、“private”と付いているだけあったきっと子ブログ毎に分かれているDBの接頭語“wp●_”を示すものなんだろう。

正解か不正解かは定かではないが、とりあえずちゃんと表示されたので、自分的に正解と決定!


しかし、表示されたカテゴリーには、子ブログの場合「ブログロール」という表示がついてくる。

正直じゃまくさい。

しかし、これを取り除くようにするには、今のスキルではむずかしそうだ…。
さて、お仕事で表題の通り、WordPress3.0で親ブログに子ブログの新着記事のリストを表示させるプラグインの設置を行う必要が出てきた。

とりあえずプログラマにお願いする前に自分で色々とネタを検索。

「WP 親ブログ 子ブログ」などで検索してみたところ、WPMUでのプラグインではあるが、「jopGlobalBlogArchive」なるものを発見!
早速設置を試みる。

まずは制作者のものらしきサイトhttp://blog.justoneplanet.info/2009/04/22/jopglobalblogarchivewordpress-mu-plugin/からプラグインをダウンロード。

ダウンロードファイルを解凍して、設置説明では“「/wp-content/mu-plugins/」に解凍したファイル、「jopGlobalBlogArchive.php」を設置する”とあったので、WordPress3.0の/wp-content/plugins/に設置してみた。

そのままでは反映されないみたいなので、テーマの編集が必要かな?

テーマの編集画面で、“メインインデックスのテンプレート (index.php)”を選択して編集開始。

まずは、もしもの時もすぐにもとに戻せるように現行のPHPの指示を残しつつ、“/* */”で囲んでコメント化。


船を買うぞ~!-20101019-1



船を買うぞ~!-201010-19-2


そしてプラグインをダウンロードしたサイトの「■使い方」に記載されているソースをそのままコピペで追加。


船を買うぞ~!-20101019-3
こんな感じ。

んで、早速ファイルを更新して確認。


……… 真っ白…。

色々と試行錯誤の結果、思い切って元のコメントアウト化した部分を全て削除して、ソースを追加したらうまく表示された。


船を買うぞ~!-20101019-4


コレにて完了!かと思いきや、表示されたタイトルのリンクが間違っておる。

ちゃんと正しいページにリンクするものや、存在しないページにジャンプするものなどまちまち。

どうもトップページで設定されているリンク(ページIDナンバー)と、実際に表示させなければならないリンク先番号が違っている場合があるからみたいだ。

んで、PHPMyAdmin開いてDB確認してみたところ、どうやら全サイトの記事を一括管理しているテーブル「wp_jop_global_posts」を参照しているようだが、リンク先設定の読み込みを、その中の“ID”を参照しているようだ。

正しくは“post_id”だと思う。

なのでプラグインファイル修正。

まずはリンク設定“the_permalink”を検索。

すると“get_permalink”が参照されている。

なので今度は“get_permalink”を検索。

144行目あたりから、うじゃ~っと80行ちょっと記述がある。

その中で“ID”記述を探してみると、たぶん8個ほど検出。

最初のほうは“post_type”がpageやattachmentの事を書いている。目的の記事はpost_typeがpostなので違うと想像できる。

その先はよく分からないけれど、if文で階層が下がっているので、ここら辺も違うような気がする。

ということで、185行目以降を変更することにする。

ターゲットは211行と221行の2つ。

正解は211行目の“ID”。

この“ID”を下記のように“post_id”に変更してあげると見事に整合がとれた!

200行目あたりから
$leavename? '' : '%pagename%',
);
$rewritereplace = array(
(self::$post->blog_id == 1)? 'blog' : $blog_path,
$date[0],
$date[1],
$date[2],
$date[3],
$date[4],
$date[5],
self::$post->post_name,
self::$post->ID,
$category,
$author,
self::$post->post_name,
);
$permalink = get_option('home') . str_replace($rewritecode, $rewritereplace, $permalink);
$permalink = user_trailingslashit($permalink, 'single');
return apply_filters('post_link', $permalink, self::$post, $leavename);
}
else{ // if they're not using the fancy permalink option

↑↑↑上記を下記の様に↓↓↓

$leavename? '' : '%pagename%',
);
$rewritereplace = array(
(self::$post->blog_id == 1)? 'blog' : $blog_path,
$date[0],
$date[1],
$date[2],
$date[3],
$date[4],
$date[5],
self::$post->post_name,
self::$post->post_id,
$category,
$author,
self::$post->post_name,
);
$permalink = get_option('home') . str_replace($rewritecode, $rewritereplace, $permalink);
$permalink = user_trailingslashit($permalink, 'single');
return apply_filters('post_link', $permalink, self::$post, $leavename);
}
else{ // if they're not using the fancy permalink option


これでとりあえず目的達成。
ブログをなかなか書いてる時間が無い。

理由は3つ。

・ネタが乏しく、文章力が無い。

・ツイッターや相場確認など、ブログ以外にすることが多い。

・ノートだと入力が捗らない。

と自分では分析する。


だから何だろう。


ただの泣き言だね。

やれてる人は、やれている。

こういう分析をしてる時点でやれてない人。

どんなことにもやれてる人にならないと、今の世の中生き残れない。

泣き言、言い訳は無し。

とにかく頑張って、目標達成へ。



なんだかやる気が出てきた。

義父は焼酎が好きだ。


お酒を飲むのが好きなのかな。


夜は必ず晩酌をする。


昼も飲んでるときがある


飲み始めは良いけれど、途中から活舌が悪くなり何を言っているのか聞き取れないときが多々ある。


そして、自慢話を始める。


少しずつ感情が入ってきて、話は一人で壮絶に盛り上がっていく。


先日はちょっと涙ぐんでいたときもあった。


いわゆる普通の酒好きおじいちゃんである。


たまに会うから、別段問題も感じないのだろうけど、その相手を毎日となるとまた違うのかもしれない。


だからか義母と嫁はあまり焼酎を飲ませたがらない。


ロレツが回らなくなってくると、義母と嫁に怒られる義父。


定年退職を迎え、昼間は取り立てて何かするわけでもない。


知り合いの工場に人手が必要になったときに手伝いに行く程度。


それ以外、時間のあるときはテレビを見ながら焼酎三昧。


なのに、健康診断ではどこも問題ない健康体。



人間、やりたいようにやって、ストレスを溜めないように生きていくのが一番なんだろうなぁ。



ここのところ、毎日自分も焼酎を飲んでいる。


別にまねしてるわけではないけれど。


就寝前の待ったりとした時間に、なんとな~く欲するものを気のままに口にする。


こういうのが大事なのかもね。

今日は長男の初保育園の日。


ちゃんとやっていけるのか親としては不安なところ。


保育園での状況が気になって仕事が手につかなかった。


家に帰ってみると、いつも以上にテンションが高い。


基本いつもテンションが高い子だが、今日は格別だ。


こりゃきっと保育園で楽しく遊んだに違いない!


そう思って嫁に確認してみると、どうも逆で大泣きしていたらしい。


わが子と一緒で今日がはじめての女の子と二人でわんわん泣いていたようだ。


保育園の連絡帳には、大泣きしていたが先生に抱っこされたら泣き止んだと書いてある。


給食も食べたらしいが、ちゃっかりサラダは残したらしい。


この甘ったれ具合、どうやら大泣きしたけれど本調子も出せたみたい。


きっと明日は泣かないで遊ぶことだろう。


そのうち保育園での友達もできるといいな。



保育園の連絡帳。


毎日読むのが楽しみになりそうだ!