WordPress On Zencart を使ってて、パンくずリスト(Breadcrumbs)とページタイトル(title)がどうも、うまく変化していなくて、いつもブログのタイトルだけになってしまっていたので、修正。
includes/languages/japanese/wordpress.php
修正前
if($woz_install){
$cat_id = htmlspecialchars($_GET[‘cat’],ENT_QUOTES);
if ( !empty($cat_id) ) {
// category exclusion
if ( !stristr($cat,’-‘) )
$zen_heading_title[] = get_the_category_by_ID($cat_id);
}
$p_id = htmlspecialchars($_GET[‘p’],ENT_QUOTES);
if ( !empty($p_id) ) {
$zen_heading_title[] = $wpdb->get_var("SELECT post_title FROM $wpdb->posts WHERE ID = $p_id");
}
define(‘NAVBAR_TITLE’, implode(BREAD_CRUMBS_SEPARATOR, $zen_heading_title));
define(‘WOZ_HOME_ADDRESS’, ‘/?’);
}else{
define(‘NAVBAR_TITLE’, ‘Error:not found [ABSPATH]’.ABSPATH);
}
修正後
if($woz_install){
if(isset($_GET[‘cat’])){
$cat_id = htmlspecialchars($_GET[‘cat’],ENT_QUOTES);
if ( !empty($cat_id) ) {
// category exclusion
if ( !stristr($cat,’-‘) )
$zen_heading_title[] = get_the_category_by_ID($cat_id);
}
}
if(isset($_GET[‘p’])){
$p_id = htmlspecialchars($_GET[‘p’],ENT_QUOTES);
if ( !empty($p_id) ) {
$zen_heading_title[] = $wpdb->get_var("SELECT post_title FROM $wpdb->posts WHERE ID = $p_id");
}
}
if(isset($_GET[‘page_id’])){
$p_id = htmlspecialchars($_GET[‘page_id’],ENT_QUOTES);
if ( !empty($p_id) ) {
$zen_heading_title[] = $wpdb->get_var("SELECT post_title FROM $wpdb->posts WHERE ID = $p_id");
}
}
define(‘NAVBAR_TITLE’, implode(BREAD_CRUMBS_SEPARATOR, $zen_heading_title));
define(‘WOZ_HOME_ADDRESS’, ‘/?’);
}else{
define(‘NAVBAR_TITLE’, ‘Error:not found [ABSPATH]’.ABSPATH);
}
タイポくさい気もするんですが、$_GET[‘p’] のところ。
実際のサイトでは、?page_id=*** というふうに $_GET[‘page_id’] を使って、ページIDを表示しているんで、修正前のコードだと、ページタイトルが取得できずに、ブログタイトルだけが、パンくずや、タイトルに送られていたんですね。
そこで、 $_GET[‘page_id’] があった場合は、それをページIDとしてページタイトルを取得するように修正しました。