すべてのカテゴリーにもつきます。
ちなみに、カテゴリ情報をすべて出力すると以下のように表示されます。
stdClass Object ( [term_id] => 6 [name] => コンペ情報 [slug] => competition [term_group] => 0 [term_taxonomy_id] => 6 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [object_id] => 55 [filter] => raw [cat_ID] => 6 [category_count] => 1 [category_description] => [cat_name] => コンペ情報 [category_nicename] => competition [category_parent] => 0 ) 1
上記のようになり、ここにも[1]がついてきます。
そのコードを書いたテンプレート(phpファイル)の後ろのほうに 1 があるのでは?
echoとかprint_rの表示の外で「1」は表示されているように感じられます。
<?php
$cat=get_the_category();
echo 'cat=';
print_r($cat[0]->name);
echo '<br />';
?>
としたとき、どのような結果になりますでしょうか。
phpファイル(single.php)を確認してみたところ不要な数字の[1]は確認できませんでした。
<?php
$cat=get_the_category();
echo 'cat=';
print_r($cat[0]->name);
echo '<br />';
?>
とした所、結果は
cat=コンペ情報
となり、[1]は表示されませんでした!
どういう理由なのでしょうか。
プラグインのどれかが影響している(停止して違いを確かめる)、テーマが特別なものである、などが考えられます。
プラグインを停止して試みたところ変化がなかったのでプラグインに原因はないようです。
素人が作ったオリジナルテーマなので、きっとテーマの方に問題があると思います。
どのページでも同様の現象が起きていることからベースの部分の初歩的なミスなのではないかと思いますので一つ一つかみくだいてみます。
ちなみになんですが、このような時はどのようにチェックしていくのがよいなど、ございましたらアドバイス頂けると幸いです。
お手数をおかけいたしますがよろしくお願い致します。
テーマをデフォルトにして、ループ部分に当該コードをかいて検証してみるとどうですか?
もしそれでも1が書き出されるようであればテーマ作成中に誤ってコアのファイルに不要なコード(文字列)が入ったと考えられるのでは?
結論から言うと、これはバグ等ではなく、PHPとして正しい動きをしていると思われます。
そもそも、print_r で出力できるため、echo する必要が無いです。
echo print_r することでどうなるかというと、
print_r した際の返り値(出力する内容ではありません)を echo することになります。
そして、print_r の返り値は通常TRUEです。
PHP: print_r – Manual
ここは少し難しいのですが、TRUE or FALSE は論理値と言われるものなので、echo したときはそのままTRUEが出力されるのではなく、1に変換されます。普通はそんなことしないので、あまり気付きませんが。
boolean – PHP – Get bool to echo false when false – Stack Overflow
ですので、今回のコードのみを見た場合、echoとprnt_rは同時にしないのが正しい記述と思われます。
Ayustar さんへ。
「echo」も書かれていたのですね。
「1 はtrueだろうから、この後の行にきっと余計なコードがあるんじゃないかなー」とか思ってましたが…こういうのって気付かないですよね…!
dance_bow さんへ。
print_r は配列を表示するものですが、単独で使用します。
<?php
print_r($cat);
?>
echoと似てるけど、関数チックな使い方なので、間違えやすいかも知れません。
preタグで囲んであげると、改行付きで綺麗に表示させられます。
<?php
echo '<pre>';
print_r($cat);
echo '</pre>';
?>
同様のトピックをもう一つ上げられているようなので、解決したら両方とも閉じていただけると幸いです。