— functions.php —
function cat_bar() {
var_dump('cat_bar() is working'); // これが表示されるならこの関数は動いている
var_dump( get_the_category()->slug ); //カテゴリのスラッグを表示
if (in_category(array('interview')) ) :
echo '<span class="cat_bar_interview"></span>';
elseif (in_category(array('customer-voice')) ) :
echo '<span class="cat_bar_customer_voice"></span>';
elseif (in_category(array('case')) ) :
echo '<span class="cat_bar_case"></span>';
elseif (in_category(array('new-item')) ) :
echo '<span class="cat_bar_new_item"></span>';
endif;
}
2つ目のvar_dumpで出てきた値がin_categoryで指定している値と一致しているかチェックしてみてください。
1つ目のvar_dumpの内容も出てきていない様子であればこの関数が実行されていません。
Okamoto Hidetaka 様
ご回答いただきありがとうございます。
教えていただいたコードを試してみたところ、以下の内容が表示されました。
string(20) “cat_bar() is working”
Notice: Trying to get property of non-object in/Applications/MAMP/htdocs/サイト名/wp-content/themes/テーマ名/functions.phpon line 124
NULL
正常には動いているようですが、NULLと表示されるということはカテゴリーが参照できていないということでしょうか。
データベースを確認してみたところ、wp_termsにはカテゴリー内容が存在していました。
検証したところ span 要素が出力されたので、function cat_bar() のコードに変なところはないと思います。
ところで
var_dump( get_the_category()->slug );
は
$cats = get_the_category(); // カテゴリーオブジェクトの配列
var_dump( $cats[0]->slug );
ですね。
追記:カテゴリーを2つ以上つけてあるなら $cats[1]->slug なども対象に。
こんにちは、横からすみません。
page-press.phpは、query_post()2個ひつようないですよね、
<?php
$args = array(
'post_type' => 'post',
'nopaging' => true,
);
?>
<?php query_posts( $args ); ?>
<?php if ( have_posts() ) : ?>
<?php //query_posts( 'nopaging=1' ); ?>
<?php
while ( have_posts() ) : the_post();
/* ループ開始 */
?>
<div <?php post_class(); ?>>
<span class="category-marker"></span><?php the_title( '<h2>', '</h2>' ); ?>
<?php the_post_thumbnail( array( 300, 300 ) ); ?>
<?php //cat_bar(); ?>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
<?php endif; ?>
cat_bar()も削って、代わりに
<span class="category-marker"></span>
と、
<div class="post">
の代わりに<div <?php post_class(); ?>>
に置き換えて、
スタイルシートに、以下のようにスタイルをセットすれば、難しい事をしなくて済むんじゃないですか?
.category-marker{
display:inline-block;
width:100px;
height:1em;
border:1px solid #ccc;
}
.category-hello .category-marker{
background:#2ecc71;
}
.category-aciform .category-marker{
background:#e74c3c;
}
もし、カテゴリーが複数で込み入っているなら、条件分岐をpost_class()のフィルタかなんかで追加するといいのではないかと思います。
category-hello なんかのクラスは、日本語だと、category-idに置き換えられたような気がしますが、その辺りは よしなに、
無事解決に至りました。
ご回答ありがとうございました。