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

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

ただいまの
回答率

90.51%

  • WordPress

    8920questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

WordPressのカテゴリー別の記事一覧を表示したいです

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,413

ami15821

score 44

前提・実現したいこと

ブログページのサイドバーに読み込ませたカテゴリーのリンク先に、カテゴリー別の記事一覧ページを表示できるようにしたいです。

発生している問題・エラーメッセージ

サイドバーに「wp_list_categories」関数を使ってカスタム分類の一覧を出力をするとことまではできたのですが、クリックしてもリンク先が表示されないため、taxonomy-category.phpを作り、再度読み込みをしてから出力されたカスタム分類をクリックしましたが、表示がされませんでした。
→【修正】2016/06/09 taxonomy-category.phpは削除してtaxonomy.phpのみに変更しました。

該当のソースコード

sidebar.php

<p class="contenc_tite">category</p>
<?php
    wp_list_categories(array('title_li' => '',  //デフォルトで出力されるタイトルを非表示
    'taxonomy' => 'cat01', //カスタム分類名 
    'show_count' => 1 //各カテゴリーに投稿数を表示する
    )); ?>


taxonomy-category.php

<?php
$cat = get_the_category(); $cat = $cat[0];
$cat = $cat->cat_ID;
$posts = get_posts("order=asc&category=$cat&numberposts=100");
?>
<ul id="pagelist">
<?php foreach($posts as $post): ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a> <?php the_time(get_option('date_format')); ?></li>
<?php endforeach; ?>
</ul>

taxonomy.php 

<?php $tax_posts = get_posts('post_type=blog_page01&taxonomy=cat01&term=murmur'); if($tax_posts): ?>
    <ul>
        <?php foreach($tax_posts as $tax_post): ?>
        <ul class="border clearfix">
 <div class="col_l">
        <span class="thumb">
            <a href="<?php echo get_permalink($tax_post->ID); ?>">

            <?php if(has_post_thumbnail($tax_post->ID)) {
                echo get_the_post_thumbnail($tax_post->ID,'post-thumbnail');
             } ?>
            </a>
        </span>
      </div>
<!-- col_l -->
      <div class="col_r">
        <span class="blog_topic title"><?php echo get_the_title($tax_post->ID); ?></span>
         <li class="day01"><?php the_time('Y年n月j日'); ?></li>
         <li class="topic_text03"><a href="<?php the_permalink() ?>"><?php echo mb_substr(strip_tags($tax_post->post_content), 0, 200).'...'; ?> </a></li>
      </div>
<!--col_r-->
      </ul>
    <?php endforeach; ?>
    </ul>
<?php endif; ?>

試したこと

1.category.php → taxonomy-category.phpに変更 表示されず。。。
2.taxonomy-category.php → taxonomy-cat01.phpに変更 表示されず。。。
3.taxonomy-category.phpは削除してtaxonomy.phpのみに変更(表示されるようになる)
4.taxonomy.phpの該当箇所のコードを書き換えて、今はレイアウトの崩れがなく特定のカスタム投稿タイプの特定のタクソノミーの値に一致する記事だけが表示される設定なっています。
よろしくお願い致します。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

0

カスタム分類のタクソノミー名がcat01ならば、
taxonomy-category.php

taxonomy-cat01.php
では?

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/06/06 21:05

    いつも早い回答、ありがとうございます。

    taxonomy-cat01.php に変更しましたが、表示されませんでした。。。
    今表示されるのは、長いリロードのあとに

    ****.co.jpページは機能していません
    ****.co.jp でリダイレクトが繰り返し行われました。

    と表示されてしまいます。

    キャンセル

  • 2016/06/06 22:33

    それはテンプレートファイル名の問題ではなく、別の問題です。同名のスラッグを、カテゴリスラッグや投稿スラッグやページスラッグに使用されていませんか?ひとまず長めの別名でカスタム投稿タイプを作成し、お試しください。

    【WordPressで無限リダイレクトが発生したときの対策と調査メモ】
    http://did2memo.net/2016/01/26/wordpress-redirect-loop/

    キャンセル

  • 2016/06/07 13:43 編集

    お世話になっております。

    長めの別名でカスタム投稿タイプを作成しました。
    サイドバーのカテゴリー一覧をクリックすると、今度はTOPページ(index.php)が表示されるようになりました。

    キャンセル

  • 2016/06/07 13:52

    リンクのURLと表示されたときのURLがわからないので、なんとも回答出来ません。

    > 長めの別名でカスタム投稿タイプを作成しました。
    カスタム分類ではなかったのですか?その場合テンプレートがそもそも違います。

    全てのプラグインを停止し、テーマをデフォルトに戻した状態でカスタム分類/カスタム投稿タイプのみを追加し、管理画面のカスタム分類/カスタム投稿タイプに有る表示リンクからサイトを表示させてみてください。

    キャンセル

  • 2016/06/07 14:28

    失礼いたしました。
    表示されたページのURLはカテゴリー名のページでした。
    ページレイアウトがTOPページ(index.php)の表示で、TOPページが表示されていると勘違いしておりました。

    キャンセル

  • 2016/06/07 16:24 編集

    >全てのプラグインを停止し、テーマをデフォルトに戻した状態でカスタム分類/カスタム投稿タイプのみを追加し、管理画面のカスタム分類/カスタム投稿タイプに有る表示リンクからサイトを表示させてみてください。
    →全てのプラグインを停止し、テーマをデフォルト(Twenty Sixteen)に戻しました。
    カスタム投稿タイプはプラグイン『Custom Post Type UI』で作っているので、プラグインを『Custom Post Type UI』だけ有効にして、管理画面のカスタム投稿タイプの投稿記事を確認しました。
    表示内容は お探しのページが見つかりません。とデフォルトテーマのブログページに表示されました。

    キャンセル

  • 2016/06/09 02:36

    【Custom Post Type UI の編集画面を日本語で徹底解説! - コスギス|新潟県長岡市】
    http://kosgis.com/news/custom-post-type-ui-ja/
    Has Archive の項目を確認してください。

    【フォーラム » taxonomyテンプレートを使いたいが、index.phpが呼び出される — WordPress】
    https://ja.forums.wordpress.org/topic/13869
    あとはパーマリンク設定の見直しですかね。

    キャンセル

  • 2016/06/09 11:01 編集

    ご対応ありがとうございます。

    カテゴリーの記事一覧、表示されるようになりました。
    taxonomy.phpを設置したら、表示されるようになりました。

    ただ、タクソノミーのカテゴリー(ターム)がすべて表示されてしまう設定になっている上、画面表示にしたときにレイアウトが崩れてしまって未だ完了まで行けてません。。。
    どう書き直せばいいのかわからず、作業が止まってしまっています。。。

    キャンセル

  • 2016/06/09 11:10

    ここにコードを書かず、質問に追記してください。

    キャンセル

  • 2016/06/09 11:33

    失礼いたしました。
    修正します。

    キャンセル

  • 2016/06/09 19:54

    以前のコードを削除するのはやめましょう。あくまで追記でお願いします。また、コメントも編集可能なので、コード部分を削除しておいてもらえませんか?

    キャンセル

  • 2016/06/09 20:09 編集

    失礼いたしました
    修正しました

    キャンセル

  • 2016/06/09 20:14 編集

    taxonomy.php の以下のコード
    <?php $tax_posts = get_posts('post_type=blog_page01&taxonomy=cat01&term=murmur'); if($tax_posts): ?>
    ここの部分のterm=murmur'を特定のタームではなくて、カスタム投稿記事をターム毎に分類して一覧表示するできるような記述に書き直したいのですが、どう修正したらいいかわからないため困ってます。

    キャンセル

  • 2016/06/09 20:21

    以前のコードは編集履歴から取得できるので、そこから復元してください。teratail はチャットツールではなく情報共有ツールなので、他の人がこの質問を見ることも考えるべきだと思います。回答と質問がかみ合わなくなるため、質問文の内容は削除せず追記してください。

    キャンセル

  • 2016/06/09 20:35

    失礼いたしました、削除してしまったコードを復元いたしました。

    キャンセル

  • 2016/06/09 21:08

    get_posts を使わずに通常のloopで処理されれば良いのでは。

    if ( have_posts() ) : while ( have_posts() ) : the_post();
    // loop
    endwhile; endif;

    キャンセル

  • 2016/06/10 10:45

    kei様、いつも回答ありがとうございます。

    アドバイスいただいた様にget_postsを使わないで通常のloopに変更しましたらようやく希望通りの表示になりました。
    ごちゃごちゃと書き過ぎていた様です。
    長いお付き合い、ありがとうございました。

    キャンセル

  • 2016/06/10 10:47

    いえ、解決されたようでよかったです。カスタマイズがんばってください!

    キャンセル

0

試していません:

まずは表記のコードを検索:

https://developer.wordpress.org/reference/functions/get_the_category/
上記 Reference に以下の表記があります。:
"For custom taxonomies use get_the_terms().".
って事は?

get_the_terms();

https://developer.wordpress.org/reference/functions/get_the_terms/
これぐらいしか思い当たらず、見つけられませんでした。
的外れはご容赦を。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/06/07 17:16

    ご回答、ありがとうございます。

    taxonomy-category.phpの
    $cat = get_the_category(); $cat = $cat[0];

    $cat = get_the_terms(); $cat = $cat[0];
    に変更、ということだったのでしょうか?

    変更してみたのですが、表示は変わりませんでした。

    キャンセル

  • 2016/06/07 18:51

    え~と…私は50歳を過ぎているので、こんな時には恐ろしくアナログに、「考えず」に「データ取得を繰り返す」のが基本です。そこにはパターンも有ります。

    例えば表記の「 $cat 」ですが、どんな条件の時に取得出来ている・いないのか? Condition を噛ませてあるのなら、それはどう動いているのか? パターンを抽出して、「対症療法」ではなく、「根本」から見れば、逆に時間も掛かりません。

    「仮定」の積み重ねは当たれば面白く成功体験も得られますが、外れた時の時間コストが大き過ぎます。

    公開出来る範囲もお有りでしょうから、後は頑張ってみて下さい。参考にならず、恐縮です。

    キャンセル

  • 2016/06/07 19:56

    こちらこそ、お時間を割いていただいてありがとうございます。

    wordpressの根本が、未だよくわからずいじくっている初心者ですので、質問の仕方に穴がある可能性も十分にございます。

    ご対応、ありがとうございました。

    また機会がございましたら、よろしくお願いいたします。

    キャンセル

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

  • WordPress

    8920questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。