2017年9月6日水曜日

カテゴリ設定に注意

今回のサイトでは「ニュース」、「商品」、「求人」と、3種類の投稿を使用している。
それぞれタグ、カスタムフィールドの設置状況が異なり、それぞれに対応するテンプレートは他の投稿にはちゃんと対応していない。
テンプレートはカテゴリで分類しているので、カテゴリ設定を間違えると表示がおかしくなる。
”てすと”の商品投稿をカテゴリ設定せずに保存したため、自動的に「未分類」カテゴリに設定された。
このカテゴリは「NEWS」に変更してニュース記事を入れるカテゴリとして使っていた。
商品は「Welcart」を使っていて、その商品は”商品マスター”で一覧表示され、”投稿一覧”には出てこない。
そして「Welcart」は「商品詳細ページタイトル」という部品を装備していて、「商品名」とは違い、一覧や詳細ページに表示するタイトルを別に設定できるようになっている。
デフォルトでは自動で同名になるが。
”テスト”商品を”てすと”ととして作成した後でやっぱりそのまま使うので「商品名」だけを変更した。
当然「商品詳細ページタイトル」は「てすと」のままで、一覧や詳細ページにはこのタイトルが表示される。
問題となった「NEWS」一覧ページは先頭にこの商品投稿が来ていて、本来のニュースが出てこないという事態になっていた。
しかも余計なアイコン、字崩れなど一見するとどうにも原因不明の、もしかしたら恐怖の”先祖がえり”かも、とも思わせる姿を見せていた。
「商品マスター」には「てすと」などという投稿は存在しない。「商品詳細ページタイトル」はこの一覧用ではないからだ。
もちろん「投稿一覧」にもない。
ゴミ箱を「完全に削除」しても消えない。

しかたなく、泣く泣く難しいデータベースへのアクセスを試みようと「WP データベース 投稿 削除」などとググってみた。
するとこんな記事に遭遇

https://www.imamura.biz/blog/10204

こちらの

<?php
$data = $wpdb->get_results( "
 SELECT post_title
 FROM $wpdb->posts
 WHERE post_status = 'future' /*予約投稿ステータス*/
" );
foreach ($data as $value) {
 echo $value->post_title . "<br />";
}
?>

を拝借して、試に一覧を出してみた。

すると「てすと」記事は確かに存在する。

では、どこにいるのか。

よくよく「商品マスター」を確認してみるとカテゴリに「NEWS」が設定されている記事が最後(つくったのが最初なので)にあるのを発見した。
商品名はもちろん「てすと」ではない。

商品編集画面で「てすと」から変更して本チャンにしたそのカテゴリに修正。
「NEWS」カテゴリ一覧ページは目出度く正常に表示されました。

今回はいつの間にか、「NEWS」用のテンプレートの

<?php query_post('category_name=news')?>

を削除していて、さらに分かりずらくなっていた。

こんなミスは後悔するようなものではないが、自戒の念と、もしかしたら結構多くの人が迷い込んでいるのではと思うので公開します。








0 件のコメント: