WordPressのことです。
get_the_category()なんかでやるのが普通ですが、category.phpのなかで普通じゃないことをやったりすると、get_the_category()だとカテゴリがとれなくなるときがあるので、汎用的に取る方法。
$uri = $_SERVER["REDIRECT_URL"]; // "/items/category/blog/page/2" $url = explode("/", $uri); // 0="", 1="items", 2="category", 3="blog", 4="page", 5="2"
こんな感じでURIをぶった切ればカテゴリが取れるよねということ。
“/page/2″が付いているのは2ページ目を取得するときのURLはこういう風になるよという例です。
あと、ブログは1ページ5件表示したいけど、商品一覧は1ページ20件表示で、○○は○件表示でみたいにカテゴリによって表示件数が変わる場合、表示設定だけじゃダメですよね。
query_posts($query_string.'&posts_per_page=5'); if (have_posts()) { while (have_posts()) { the_post();
query_posts()に posts_per_pageを付けて再実行させてやるっつうことでOK。
なんとなく、if (have_posts()) の下に入れたくなるけど(表示するものがあるときだけやればよくね?)、そうすると、2ページ目、3ページ目にいった場合、have_posts()は表示設定で決められた件数分だけページをカウントして、有る無しを判断するので、下に入れるのはNGです。(8件投稿があって、表示設定が10件で、posts_per_page=3の場合、1ページ目はいいけど、2ページ目にいったところで11件目はないよということになる)
余談。データがないときはどうするか。カテゴリ・リンクだけ先に作っておいて中味がまだないとき(いずれ埋まる前提)、先々使わなくなる「ありません」画面を作るのはしゃくだなというとき。
if ($cat === NULL) { // 表示データがない場合はTOPへ飛ばす ?> <meta http-equiv="Refresh" content="0; URL="> <title> - </title> <?php } else {
こんな風にしてTOPへ飛ばしちゃいます。楽ちんですね。