category.phpについて

2016 年 4 月 27 日

ホーム フォーラム テンプレート(テーマ) category.phpについて

このトピックには13件の返信が含まれ、3人の参加者がいます。11 ヶ月前 komori さんが最後の更新を行いました。

14件の投稿を表示中 - 1 - 14件目 (全14件中)
  • 投稿者
    投稿
  • #78419

    komori
    Participant

    ——————————————-
    WordPress のバージョン:4.5.1–ja
    Welcart のバージョン:1.8.2
    ご利用のテーマ:Welcart Basic
    症状を確認したブラウザ:Chrome
    サーバー(会社名、サービス名):
    SSLの利用: 未
    WordPress のパーマリンク設定:基本
    ——————————————–
    Custom Post Type Widgetsで設定したカテゴリーからカテゴリー別の記事一覧に飛ぶ事が出来ません。現在の状態は以下の通りです。

    ECサイト内に商品を紹介する専属スタッフのブログ(2~4)設置する事になりました。

    page-blog.php / archive-blog.php / single-blog.php / sidebar-blog.php / category-blog.php
    固定ページ用にテンプレート(blog.php)を作成して動作を確認しています。
    それぞれには元テンプレートのpage/archive/single/sidebar/category.phpをコピーしてarchive-blog.phpのheaderの直下に
    <?php
    $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
    $args = array(
    ‘paged’ => $paged,
    ‘posts_per_page’ => -1,
    ‘post_type’ => ‘blog’
    );
    $wp_query = new WP_Query($args); ?>
    を書き込んで振り分けをしています。
    sidebarにはCustom Post Type Widgetsを使いそれぞれのカテゴリーやアーカイブをブログごとに変えていますが、カテゴリーだけ
    [こちらには何もありません。検索をお試しください。]
    と出てしまいます。

    category.phpの中なのかfunctions.phpの中なのかどこのプログラムを書き換えていいか分かりません。

    functions.php内の
    function welcart_basic_query( $query ) {
    $item_cat = get_category_by_slug(‘item’);
    $item_cat_id = $item_cat->cat_ID;
    if ( is_admin() || ! $query->is_main_query() ) {
    return;
    }
    if ( $query->is_search && !isset($_GET[‘searchitem’]) ) {
    $query->set(‘category_name’,’item’);
    }
    }

    function welcart_basic_query( $query ) {
    $item_cat = get_category_by_slug(‘item’);
    $item_cat_id = $item_cat->cat_ID;
    if ( is_admin() || ! $query->is_main_query() ) {
    return;
    }
    if ( $query->is_search && !isset($_GET[‘searchitem’]) ) {
    $query->set(‘category_name’,’item’);
    }

    $item_cat = get_category_by_slug(‘blog’);
    $item_cat_id = $item_cat->cat_ID;
    if ( is_admin() || ! $query->is_main_query() ) {
    return;
    }
    if ( $query->is_search && !isset($_GET[‘searchitem’]) ) {
    $query->set(‘category_name’,’blog’);
    }
    }
    と追加してみましたが変化はありません。

    PHPを勉強すればいいのは分かっているのですが、ご教授頂ければと思います

    #78421

    uishi
    Participant

    category-blog.phpには何か表示されるんでしょうか?
    ないならウィジットにも何も表示されないと思いますが。
    カスタム投稿は投稿タイプであって、カテゴリーのことじゃないと思いますが。
    それと4人の別の方がブログを書くなら、
    普通の投稿をauthorで分けても良いのではないでしょうか。
    最後に
    Custom Post Type Widgetsの作者に聞いた方が早いような気がしますが。

    #78425

    komori
    Participant

    category-blog.phpにはそれぞれのブログのカテゴリー別記事一覧を表示させたいのです。
    ウィジットにはそれぞれのブログに設定されたカテゴリーの表示は出てきます。

    >>普通の投稿をauthorで分けても良いのではないでしょうか。
    それぞれの商品を紹介する専属スタッフが同名のカテゴリーを使うのですが、紹介する商品が違うのでまとめてしまうと問題があるのでそれぞれ別々に作らないといけないので。

    #78426

    yasumax
    キーマスター

    こんにちは。

    カスタム投稿タイプとカスタム分類では別物になります。
    カスタム投稿タイプが「blog」であるならば、カスタム分類は何ですか?
    また、カスタム分類の場合category.phpは通りません。
    以下の順番でテンプレートファイルが読み込まれます。

    1. taxonomy-{taxonomy}-{term}.php
    2. taxonomy-{taxonomy}.php
    3. taxonomy.php
    4. archive.php
    5. index.php

    テンプレート階層について詳しくはCodexをご参照ください。
    WordPress Codex テンプレート階層

    #78427

    uishi
    Participant

    >また、カスタム分類の場合category.phpは通りません。
    そうでしたか。失念してました。

    #78429

    uishi
    Participant

    >また、カスタム分類の場合category.phpは通りません。
    そうでしたか。失念してました。

    custom post type uiでカスタム投稿を作ると、
    wordpress組み込みのカテゴリーをカスタム投稿でも使える(?)ので、
    category-(cat_id).phpとかも使えるかもしれませんよ。
    今度は投稿タイプを絞り込む必要があるのかもしれませんが。

    #78430

    komori
    Participant

    ひとまず
    ctegory-(cat_id).php等のテンプレートを削除し、
    Custom Post Type Widgetsでtaxonomyのスラッグをblog1、blog2のように変えるとそれぞれのカテゴリー別一覧に飛ぶ事が出来ました。しかし、アーカイブや個別記事ではサイドバーはブログ用のウィジットが入っているのですが、カテゴリー記事のページだけ商品ページ用のサイドバーが表示されます。
    この場合なんですが、通常の記事一覧はpage-blog.phpにしてあるのですが別にカテゴリー記事用にpage-blog1.php等を用意しないといけないのでしょうか?

    #78431

    yasumax
    キーマスター

    こんにちは。

    uishiさん>

    custom post type uiでカスタム投稿を作ると、
    wordpress組み込みのカテゴリーをカスタム投稿でも使える(?)ので、
    category-(cat_id).phpとかも使えるかもしれませんよ。

    なるほど、カスタム投稿タイプは新しく追加しカスタム分類はあえて作らずカテゴリーを使い回すという方法ですね。
    それならcategory.phpテンプレートは動作しますね。

    komoriさん>
    category.phpでpost_typeが「blog」かそれ以外かでget_sidebar()を切り替えてみてはいかがでしょうか?

    #78432

    yasumax
    キーマスター

    ちなみにですが、komoriさんが追加されたテンプレートの役割はそれぞれ以下のようになると思います。

    1. page-blog.php
      スラッグ「blog」という固定ページが作られていたら適用される
    2. archive-blog.php
      投稿タイプ「blog」のインデックスページ
      1が適用されている場合は必要のないテンプレートだと思われます。
    3. single-blog.php
      投稿タイプ「blog」の投稿ページ
    4. sidebar-blog.php
      投稿タイプ「blog」用のsidebar.php
    5. category-blog.php
      スラッグ「blog」というカテゴリーが作られていたら適用される

    なので、場合によっては1・2・5のテンプレートは削除してもいいものだと思います。

    #78436

    komori
    Participant

    category.phpに
    <?php if(in_category(‘blog1’)) : ?>
    <?php get_sidebar(‘blog’); ?>
    <?php else : ?>
    <?php get_sidebar(); ?>
    <?php endif ?>
    と追加しましたが変わらずblogのサイドバーは商品ページのものになります

    #78438

    komori
    Participant

    他の方法を調べてcategory-blog1.phpを作りcategory.phpをコピーして
    <?php if( usces_is_cat_of_item( get_query_var( ‘cat’) ) ): ?>部分を
    <?php if (usces_is_cat_of_item(get_query_var(‘cat’))) :
    // category-blog1.php を読み込む
    get_template_part(‘category’, ‘blog1’);
    else:
    // 通常カテゴリーの表示
    endif;
    ?>
    に置き換えましたがこちらでも変化無しでした。

    #78439

    komori
    Participant

    書き忘れていました。
    カスタム投稿はCPT UIでblogというslugのカスタム投稿を作りこの投稿は同じくCPT UIのタクノミー追加で作られたblog1というカテゴリーと紐づけています

    #78443

    yasumax
    キーマスター

    こんにちは。

    既存のカテゴリーを利用されているのかと勘違いしてました。
    「blog1」というカスタム分類を作られているんですね?
    でしたら、category.phpは関係ありません。
    9件前に投稿させていただいた下記を参考にしてください。

    また、カスタム分類の場合category.phpは通りません。
    以下の順番でテンプレートファイルが読み込まれます。

    1. taxonomy-{taxonomy}-{term}.php
    2. taxonomy-{taxonomy}.php
    3. taxonomy.php
    4. archive.php
    5. index.php

    テンプレート階層について詳しくはCodexをご参照ください。
    WordPress Codex テンプレート階層

    #78445

    komori
    Participant

    taxonomy-blog1.phpとういうファイルを作りそこにarchive-blog.phpをコピーすると正常に動作しました。いろいろとありがとうございました。
    とても勉強になりました。

14件の投稿を表示中 - 1 - 14件目 (全14件中)

このトピックに返信するにはログインが必要です。