web-dev-qa-db-ja.com

archive.phpのin_categoryの場合

だから私はarchive.phpテンプレートにif/elseステートメントをやろうとしています。 WPスマートアーカイブをリロードしてアーカイブを設定しています(http://wordpress.org/extend/plugins/smart-archives-reloaded/)

私のarchive.phpからのコードは以下の通りです:

<?php
   if (in_category('166')) { include 'archive-blog.php';
}

else {
   echo('foo');
}
?>

カテゴリ番号に基づいてarchive.phpに特定のテンプレートを含めるようにしようとしています。しかし、このコードは、たとえ私がブログではないカテゴリアーカイブをクリックしたとしても、アーカイブブログテンプレートを取得します。

これが正しく行われていないのではないかと思っています - in_categoryはアーカイブページでは機能しませんか?私は同様の設定をしていて、single.phpをカテゴリに基づいて異なるインクルードテンプレートに向けています。

ありがとうございます。

更新

私はまたis_categoryを使用しようとしました、そしてそれは完全に私の最初の条件を無視してそしてちょうどどんなカテゴリーのためにfooをエコーし​​ているようです。

<?php
   if (is_category('166')) { include 'archive-blog.php';
}

else {
   echo('foo');
}
?>

私が話していることへのリンク:(右側のサイドバーのアーカイブに入ります)

http://www.metropoliscreative.com/talent-analytics/w/?cat=166

http://www.metropoliscreative.com/talent-analytics/w/?cat=3

また、クライアントサーバーにはmod-rewriteがないため、パーマリンクを使用していません

2
nikibrown

メモリが機能する場合、in_category()はループ内で使用され、現在の投稿がその特定のカテゴリにあるときにtrueを返します。

あなたはおそらくis_category(166)のためです。

2

あるいは、WordPressがそのカテゴリに使用することを認識できるように、単にファイルに名前を付けることもできます。 Codex に従って、WordPressはあなたのカテゴリーを表示するために以下のファイルを(この順番で)探します:

  1. category-slug.php
  2. category-ID.php
  3. category.php
  4. archive.php
  5. index.php

そのため、category-166.phpという名前のテンプレートファイルを作成した場合、WordPressはそのファイルを使用してカテゴリ166を表示します。

2
Manzabar

あなたはほとんどそこにいないそのin_category( '166')そのis_category( '166')違いは:

  • in_categoryは、そのカテゴリにsingleが含まれているかどうかを確認します。
  • is_category現在のカテゴリアーカイブページかどうかを確認します。
1
Bainternet
<?php
$post = $wp_query- >post;
if ( in_category('166') ) {
include(TEMPLATEPATH . '/archive-blog.php’);
} else {
   echo('foo');
} ? >

それはあなたが探しているものですか?

0
user3006

代わりにis_category()を試してください。

例です。カテゴリ12 OR 13に入っているか確認してください

<?php if ( is_category('12') || is_category('13')) {  ?>

    TEST

<?php }   ?>
0
Kat