質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.93%

WordPressでheader.phpからカテゴリ名が取得出来ない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,617

score 19

WordPressで新着記事を「カテゴリー名表示+色分け」で表示したい
http://www.magical-remix.co.jp/magicalog/archives/2983

ここに書かれていることを実現したいです。

マテリアルというWordPressテーマを使っています。
http://wp-material.net/material-download/
新着記事一覧は、記事上部に表示したいと思いました。

index.phpを見てみたところ
<?php get_header() ?>

<?php get_sidebar() ?>
<?php get_footer() ?>

こんな感じになっていたため、header.phpを見たところ
<div class="main-side">
<div class="main">

最後がこの2行で、sidebar.phpを見たところ
</div><!-- .main -->
この行から始まっていたので、header.phpに記述することにしました。

とりあえず上部に書かれているソースをそのままコピペしてみたのですが、カテゴリを取得しませんでした。
本来は
<li><span class="cat-c">カテゴリーC</span> <a href="/">記事タイトル1</a><span class="ymd">(2014年01月14日)</span></li>
となるべきhtmlが
<li><span class=""></span> <a href="/">記事タイトル1</a><span class="ymd">(2014年01月14日)</span></li>

こんな感じになります。

試しに

<?php
 $cat = get_the_category();
 $cat = $cat[0];
 $chekname= $cat->cat_name;
 $chekid = $cat->cat_ID;
 echo ' chekname='.$chekname; echo ' chekid='.$chekid;
 ?>


このコードを入力したところ
chekname= chekid=
という結果が帰ってきました。

原因が全くよく分かりません。
header.php内ではカテゴリ名が取得出来ないのか、テーマの何かが干渉していて取得出来ないのか、そこすらもよく分かりませんでした。
ご指導お願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2016/06/29 02:02

    URLはリンクが張れるので、設定をお願いできますか?よろしくお願いします。

    キャンセル

  • worldrun

    2016/06/29 02:19

    URLをリンクに変更いたしました。

    キャンセル

  • kei344

    2016/06/29 02:30

    編集ありがとうございます。

    キャンセル

回答 2

checkベストアンサー

+1

参考にされたサイトの記述が現在の仕様から見ていまいちなので、別のものを参考にされたほうが良いと思います。

また、header.php に記載すると、トップページ(home.php)も投稿ページ(single.php)も固定ページ(page.php)もカテゴリアーカイブ(archive.php)も全て表示されます。

$args = array( 'post_type' => 'post', 'posts_per_page' => 5 );
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) : ?>
    <ul class="new_posts"><?php 
    while ( $the_query->have_posts() ) : $the_query->the_post();
        $cat = get_the_category();
        $catname = '';
        $catslug = '';
        if ( !empty( $cat ) ) {
            $catname = $cat[ 0 ]->cat_name; //カテゴリー名
            $catslug = $cat[ 0 ]->slug; //スラッグ名
        }
         ?>
        <li><span class="<?php echo esc_attr( $catslug ); ?>"><?php echo esc_html( $catname ); ?></span> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><span class="ymd">(<?php the_time('Y年m月d日'); ?>)</span></li>
        <?php 
    endwhile;
     ?>
    </ul><?php 
else:
     ?><p>現在投稿記事はありません。</p><?php 
endif;
wp_reset_postdata();
 ?>

※ テスト環境が無いため、テストしていませんので運がよければ動きます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 04:39

    これで動きました。運が良かったようです。
    これベースでカスタムしてみます!

    キャンセル

+1

おそらく、記事一覧を取得するための、カスタムループを
get_postsないしはWP_Queryで作成して、その中に入れないと
記事一覧自体が出ないと思われます。
(query_postsは使わないでください。)

以下を参考にカスタムループを作成してください。
http://www.m-hand.co.jp/program/4119/

※http://www.magical-remix.co.jp/magicalog/archives/2983
上記の説明ではquery_postsを使用して新着記事を取得しようとしていますが
メインクエリーを書き換えてしまうのでしないほうがいいと思われます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 02:21

    新着記事一覧と日付はうまく表示されました。
    カテゴリに必要な情報だけが空欄になってしまいます。
    それはあんまり関係ないのでしょうか。

    キャンセル

  • 2016/06/29 04:41

    keiさんのを参考にしてWP_Queryでやってみたら出来ました。
    そもそもquery_postsは現在非推奨だったのですね、無知すぎて知りませんでした。
    トップページに固定ページを置いていたのですが、query_postsを使ったら固定ページが記事に上書きされてしまいました。推奨されないわけです。
    ありがとうございました!

    キャンセル

  • 2016/06/29 07:54 編集

    無事、動いておめでとうございます!
    巷に落ちているソースは、仕様が古かったり、間違っていて動かないものも
    散見されるため、流用する場合は注意が必要ですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る