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

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

ただいまの
回答率

89.63%

wordpressのcategory.phpを複製したい

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 956
退会済みユーザー

退会済みユーザー

wordpressでECサイトを制作しているのですが、
カテゴリページに関して不明な点があるので教えていただけると幸いです。

既に存在するcategory.phpを複製し、内容だけ変えて同じように表示させたい。
category.phpでは内容エリアの内容(文章・画像等)が表示されているのですが、
複製したcategory2.phpでは内容エリアの内容が表示されません。

・既に存在するcategory.phpを複製し、category2.phpに変更
・商品カテゴリを制作し、スラッグ名を 「category2」 に変更。
・アクセス先のアドレスも /category2/ にて表示されています。
・カテゴリで設定した内容(タイトルや説明等)は反映されています。
・category2.php の下記の( )内容をcategory2に変更 <?php if(is_category('category2')): //【テスト】 ?>

・どのようにすれば【内容エリア】に記述した内容が表示されるのでしょうか?

<?php get_header(); ?>
<div id="mainContent">
                <article>

<?php
  $cat_id = get_queried_object()->cat_ID;
  $post_id = 'category_'.$cat_id; 
  ?>
<h1 class="CateImg">
  <img src="<?php the_field('cate-banner',$post_id); ?>" alt="<?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?>" /></h1>

<?php if(is_category('category2')): //【テスト】 ?>

【内容エリア】

<?php else: ?>


    <?php $photo_posts = get_posts(); ?>

<ul class="itemList">
<?php if ( have_posts() ) : query_posts($query_string . '&' . '&showposts=40' ); ?>
        <?php while(have_posts()): the_post(); ?>

                        <?php endwhile; ?>
        <?php endif; ?>
</ul>

<?php endif; ?>
<div class="cateInfo"><?php the_field('cate-info',$post_id); ?></div>
                </article>
            </div><!-- /#mainContent -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • 退会済みユーザー

    2016/09/27 21:09

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • 退会済みユーザー

    退会済みユーザー

    2016/10/07 11:33

    確認したところ category-category2.phpで設置しておりました。

    キャンセル

回答 3

checkベストアンサー

+1

8-0_nyan5さんも書かれている通り、商品カテゴリーのスラッグ「category2」を呼び出すファイル名は「category-category2.php」です。
WordPress はテンプレートフォルダに必要なテンプレートがない場合、下記の順でテンプレートを探し、あれば使います。

  1. category-category2.php
  2. category-{category2のid}.php
  3. category.php
  4. archive.php
  5. index.php

【WordPressのテンプレートファイルの種類とテンプレート階層 | Mignon Style】
http://mignonstyle.com/wordpress-template-file/#p4

【テンプレート階層 - WordPress Codex 日本語版】
http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E9%9A%8E%E5%B1%A4


ちなみに category-category2.php を作れば if(is_category('category2')): としなくても category2 であることは保障されます。その分岐を使うのであれば category.php 内で使う感じでしょう。


追記:

見逃していましたが、query_posts を使っていますね。カスタマイズで詰まる箇所が増えるだけなので、あまり使わないほうが良いですよ。

【WordPressの新・旧ループからカスタムクエリ・アーカイブまで徹底解説 | OXY NOTES】
http://oxynotes.com/?p=8615

【[Wordpress]pre_get_postsを使いこなす!pre_get_posts使い方まとめ | EMiAC-Works】
http://emiac-works.com/coding/pre-get-posts-code-snipet/

【pre_get_postsでメインクエリを制御する | Tips Note by TAM】
http://www.tam-tam.co.jp/tipsnote/cms/post9420.html

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/07 13:11

    div#mainContentの中身を削除しましたが、反映されませんでした。
    if(is_category を削除しましたが、それも反映されませんでした。

    div内に文章など入力しても、ページやページのソースコードにその文章が反映されていませんでした。

    デバックモードの方も利用してみます!

    キャンセル

  • 2016/10/07 13:24

    反映されていない場合は、スラッグが間違っているか編集しているテーマファイルが正しくアップロードされていないかどちらかだと思います。アップロード先が違うフォルダ、などということはたまにあります。

    キャンセル

  • 2016/10/12 08:02

    確認したところ、アップロード先やスラッグ名は正しかったのですが、その他含め色々と確認・修正してみます!

    キャンセル

+1

あまり自信ないですけど、

>【内容エリア】に記述した内容

とは、これだと【内容エリア】だとおもうんですが?

あと、商品カテゴリーのスラッグ「category2」を呼び出すファイル名は「category-category2.php」ではないかと思います。
確認してみてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/07 10:51 編集

    返信ありがとうございます。
    説明がわかりづらくて申し訳ありません。
    【内容エリア】に 文字テスト や html を記入しても、何も表示されないんです。

    商品カテゴリのスラッグに category2 を呼び出す
    ```<?php if(is_category('category2')): //【テスト】 ?>```は現在表示されているcategory.phpのスラッグ名を変更しただけなので、問題ないと思います。
    http://sample/category2/で表示確認できています!

    キャンセル

0

ファイルの名前 category-sample.php と スラッグ名 sample が違っているという初歩的なミスでした。初歩的なミスにも関わらず、長い間悩んでいたため、謎の達成感はありました。

考えられる原因の模索や、細かい箇所の確認を促していただいたおかげでしたので、
kei344をベストアンサーに選ばせていただきました。
無事解決できました。ありがとうございました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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