ども。鉄王です。
今日はちょっとした技術情報です。でも、実践するときは自己責任でよろしくです
WordPressで構築したサイトにパンくずリストを埋め込めるプラグイン『Breadcrumb Navigation XT』。
たとえば、あるエントリーを表示したときに、パンくずリストに
[当該エントリーが属するカテゴリ名] > [当該エントリーのタイトル]
といった表示をしたい場合、2.0.xでは
<?php
if (class_exists(’breadcrumb_navigation_xt’)) {
global $post;
$_post_id = $post->ID;
$_post_id = mysql_real_escape_string($_post_id);
if ($_post_id != "") {
$my_cat_name = $wpdb->get_var("SELECT cat_name FROM $wpdb->categories, $wpdb->post2cat WHERE cat_ID = category_id AND post_id = $_post_id");
} else {
$my_cat_name = "検索結果";
}
if ($_post_id != "") {
$my_cat_id = $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories, $wpdb->post2cat WHERE cat_ID = category_id AND post_id = $_post_id");
} else {
$my_cat_id = "0";
}
$mybreadcrumb = new breadcrumb_navigation_xt;
$mybreadcrumb -> opt['title_blog'] = ’ホーム’;
$mybreadcrumb -> opt['separator'] = ’ > ’;
$mybreadcrumb -> opt['singleblogpost_prefix'] = ’<a href="’.get_bloginfo(’url’).’/?cat=’.strip_tags($my_cat_id).’" title="’.strip_tags($my_cat_name).’">’.strip_tags($my_cat_name).’</a> > ’;
$mybreadcrumb -> opt['urltitle_prefix'] = ”;
$mybreadcrumb -> opt['archive_category_prefix'] = ”;
$mybreadcrumb -> opt['archive_category_suffix'] = ”;
$mybreadcrumb -> display();
}
?>
てな感じでやってたんですが、先日、あるサイトをつくるのに2.3.2を使ったところ、同じようなスクリプトを埋め込んでもうまくいきませんでした。MySQLでのテーブルの構成が変わってたんですな(2.1.xからかしら?)。
で、いろいろまさぐってみました。
詳しく検証したわけではないんですけれども(あわわわわ)
$my_cat_name = $wpdb->get_var("SELECT cat_name FROM $wpdb->categories, $wpdb->post2cat WHERE cat_ID = category_id AND post_id = $_post_id");
の部分を
$my_cat_name = $wpdb->get_var("SELECT name FROM $wpdb->terms, $wpdb->term_relationships WHERE term_id = term_taxonomy_id AND object_id = $_post_id");
に、
$my_cat_id = $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories, $wpdb->post2cat WHERE cat_ID = category_id AND post_id = $_post_id");
を
$my_cat_id = $wpdb->get_var("SELECT term_id FROM $wpdb->terms, $wpdb->term_relationships WHERE term_id = term_taxonomy_id AND object_id = $_post_id");
に直したところ、なんだかうまくいってますのでひとまず報告いたします。
SQL文の作法などロクに分からぬままトライアンドエラーでやっておりますので、詰めの甘さなどありましたら、ぜひご指導ください>識者
Leave a reply