category.phpについて
フォーラム › テンプレート(テーマ) › category.phpについて
-
投稿者投稿
-
2016年4月27日 10:51 PM #78419komori参加者
——————————————-
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を勉強すればいいのは分かっているのですが、ご教授頂ければと思います
2016年4月28日 8:20 AM #78421uishi参加者category-blog.phpには何か表示されるんでしょうか?
ないならウィジットにも何も表示されないと思いますが。
カスタム投稿は投稿タイプであって、カテゴリーのことじゃないと思いますが。
それと4人の別の方がブログを書くなら、
普通の投稿をauthorで分けても良いのではないでしょうか。
最後に
Custom Post Type Widgetsの作者に聞いた方が早いような気がしますが。2016年4月28日 9:53 AM #78425komori参加者category-blog.phpにはそれぞれのブログのカテゴリー別記事一覧を表示させたいのです。
ウィジットにはそれぞれのブログに設定されたカテゴリーの表示は出てきます。>>普通の投稿をauthorで分けても良いのではないでしょうか。
それぞれの商品を紹介する専属スタッフが同名のカテゴリーを使うのですが、紹介する商品が違うのでまとめてしまうと問題があるのでそれぞれ別々に作らないといけないので。2016年4月28日 9:54 AM #78426yasumaxキーマスターこんにちは。
カスタム投稿タイプとカスタム分類では別物になります。
カスタム投稿タイプが「blog」であるならば、カスタム分類は何ですか?
また、カスタム分類の場合category.phpは通りません。
以下の順番でテンプレートファイルが読み込まれます。- taxonomy-{taxonomy}-{term}.php
- taxonomy-{taxonomy}.php
- taxonomy.php
- archive.php
- index.php
テンプレート階層について詳しくはCodexをご参照ください。
・WordPress Codex テンプレート階層2016年4月28日 10:18 AM #78427uishi参加者>また、カスタム分類の場合category.phpは通りません。
そうでしたか。失念してました。2016年4月28日 10:31 AM #78429uishi参加者>また、カスタム分類の場合category.phpは通りません。
そうでしたか。失念してました。custom post type uiでカスタム投稿を作ると、
wordpress組み込みのカテゴリーをカスタム投稿でも使える(?)ので、
category-(cat_id).phpとかも使えるかもしれませんよ。
今度は投稿タイプを絞り込む必要があるのかもしれませんが。2016年4月28日 11:01 AM #78430komori参加者ひとまず
ctegory-(cat_id).php等のテンプレートを削除し、
Custom Post Type Widgetsでtaxonomyのスラッグをblog1、blog2のように変えるとそれぞれのカテゴリー別一覧に飛ぶ事が出来ました。しかし、アーカイブや個別記事ではサイドバーはブログ用のウィジットが入っているのですが、カテゴリー記事のページだけ商品ページ用のサイドバーが表示されます。
この場合なんですが、通常の記事一覧はpage-blog.phpにしてあるのですが別にカテゴリー記事用にpage-blog1.php等を用意しないといけないのでしょうか?2016年4月28日 11:06 AM #78431yasumaxキーマスターこんにちは。
uishiさん>
custom post type uiでカスタム投稿を作ると、
wordpress組み込みのカテゴリーをカスタム投稿でも使える(?)ので、
category-(cat_id).phpとかも使えるかもしれませんよ。なるほど、カスタム投稿タイプは新しく追加しカスタム分類はあえて作らずカテゴリーを使い回すという方法ですね。
それならcategory.phpテンプレートは動作しますね。komoriさん>
category.phpでpost_typeが「blog」かそれ以外かでget_sidebar()
を切り替えてみてはいかがでしょうか?2016年4月28日 11:17 AM #78432yasumaxキーマスターちなみにですが、komoriさんが追加されたテンプレートの役割はそれぞれ以下のようになると思います。
- page-blog.php
スラッグ「blog」という固定ページが作られていたら適用される - archive-blog.php
投稿タイプ「blog」のインデックスページ
1が適用されている場合は必要のないテンプレートだと思われます。 - single-blog.php
投稿タイプ「blog」の投稿ページ - sidebar-blog.php
投稿タイプ「blog」用のsidebar.php - category-blog.php
スラッグ「blog」というカテゴリーが作られていたら適用される
なので、場合によっては1・2・5のテンプレートは削除してもいいものだと思います。
2016年4月28日 2:23 PM #78436komori参加者category.phpに
<?php if(in_category(‘blog1’)) : ?>
<?php get_sidebar(‘blog’); ?>
<?php else : ?>
<?php get_sidebar(); ?>
<?php endif ?>
と追加しましたが変わらずblogのサイドバーは商品ページのものになります2016年4月28日 2:35 PM #78438komori参加者他の方法を調べて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;
?>
に置き換えましたがこちらでも変化無しでした。2016年4月28日 2:49 PM #78439komori参加者書き忘れていました。
カスタム投稿はCPT UIでblogというslugのカスタム投稿を作りこの投稿は同じくCPT UIのタクノミー追加で作られたblog1というカテゴリーと紐づけています2016年4月28日 4:37 PM #78443yasumaxキーマスターこんにちは。
既存のカテゴリーを利用されているのかと勘違いしてました。
「blog1」というカスタム分類を作られているんですね?
でしたら、category.phpは関係ありません。
9件前に投稿させていただいた下記を参考にしてください。また、カスタム分類の場合category.phpは通りません。
以下の順番でテンプレートファイルが読み込まれます。- taxonomy-{taxonomy}-{term}.php
- taxonomy-{taxonomy}.php
- taxonomy.php
- archive.php
- index.php
テンプレート階層について詳しくはCodexをご参照ください。
・WordPress Codex テンプレート階層2016年4月28日 5:49 PM #78445komori参加者taxonomy-blog1.phpとういうファイルを作りそこにarchive-blog.phpをコピーすると正常に動作しました。いろいろとありがとうございました。
とても勉強になりました。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。