恐らく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●_”を示すものなんだろう。
正解か不正解かは定かではないが、とりあえずちゃんと表示されたので、自分的に正解と決定!
しかし、表示されたカテゴリーには、子ブログの場合「ブログロール」という表示がついてくる。
正直じゃまくさい。
しかし、これを取り除くようにするには、今のスキルではむずかしそうだ…。



