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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1422閲覧

カスタム投稿タイプを作成したものの、アーカイブページに出力されない

SuzukiToshiyasu

総合スコア40

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/09/14 01:19

編集2016/09/14 02:36

■ 当該サイト : http://test.site-madoguchi.com/
当該ページ : http://test.site-madoguchi.com/archives/kamei/kameicat/%E3%82%B0%E3%83%AB%E3%83%A1

■ 目標
1.カスタム投稿タイプを2種類(加盟店・非加盟店)作成し、1つのページに加盟店と非加盟店の記事が順に現れるようにする。
2.アーカイブページも連動し、たとえばカテゴリー「グルメ」を選択すると加盟店のグルメ、非加盟店のグルメの記事が順に現れるようにしたいと考えております。

■ 現状
目標1は達成したのですが、目標2がうまくいっておりません。
「グルメ」を押すと加盟店の記事は全てグルメの記事になっているのですが、非加盟店の記事はカテゴリー選別できていない状態で一覧として表示されてしまいます。
(「グルメ」を押しても非加盟店の記事にはコンビニや銀行等の店舗情報が含まれてしまいます。)
解決策をご教授いただけますと幸いです。
宜しくお願いいたします。

■ 使用したプラグインと作業過程

「Advanced Custom Fields」を使用しています。
functions.phpに下記情報を入れて投稿タイプを登録し、archive-kamei.phpに表示されるよう記述しています。字数制限のため記述ができませんでしたが、taxonomy.phpにもarchive-kamei.phpと同じソースコードを記述し、アーカイブページが作成されるよう設定してあります。

■ functions.php

register_taxonomy(

1'newsinfocat',// 新規カスタムタクソノミー名 2'newsinfo',// 新規カスタムタクソノミーを反映させる投稿タイプの定義名 3array( 4'label' => __( 'newsinfocat' ),// 表示するカスタムタクソノミー名 5'rewrite' => array( 'slug' => 'newsinfocat' ),// カスタムタクソノミースラッグ名 6'show_ui' => true, 7'hierarchical' => true,' 8query_var' => true) 9); 10 register_post_type('kamei', 11 array( 12 'labels' => array( 13 'name' => '加盟店登録', 14 'singular_name' => '加盟店登録', 15 ), 16 'public' => true, 17 'menu_position' => 5, 18 'has_archive' => true, 19 'publicly_queryable' => true, 20 'supports' => array('title','editor','excerpt','thumbnail','custom-fields',), 21 'taxonomies' => array('kameicat'), 22) 23); 24 register_taxonomy( 25'kameicat',// 新規カスタムタクソノミー名 26'kamei',// 新規カスタムタクソノミーを反映させる投稿タイプの定義名 27array( 28'label' => __( 'kameicat' ),// 表示するカスタムタクソノミー名 29'rewrite' => array( 'slug' => 'kameicat' ),// カスタムタクソノミースラッグ名 30'show_ui' => true, 31'hierarchical' => true,' 32query_var' => true) 33); 34 register_post_type('hikamei', 35 array( 36 'labels' => array( 37 'name' => 'その他', 38 'singular_name' => 'その他', 39 ), 40 'public' => true, 41 'menu_position' => 5, 42 'has_archive' => true, 43 'publicly_queryable' => true, 44 'supports' => array( 45 'title', 46 'editor', 47 'excerpt', 48 'thumbnail', 49 'custom-fields', 50 ), 51) 52); 53コード

■ archive-kamei.php

<div class="wrapper sectionpage"> <h2 id="obi1" style="margin: 0px auto 30px;" class="goan"><span style="color:#d6170c;font-weight:700;font-size:1.0em;">○ </span>お店のご案内</h2> <div class="storepostinner"> <div class="content page73"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <div class="article wd50"> <div class="innerleft"> <a href="<?php the_permalink(); ?>"><img src="<?php if( get_field('image1')): ?> <?php the_field('image1'); ?> <?php else: ?> /wp-content/uploads/2016/09/東口商店街.png <?php endif; ?>" alt="<?php the_field('store'); ?>" alt="<?php the_field('store'); ?>" class="wh150 image2"></a> <a href="<?php the_permalink(); ?>"><button class="shousai">詳細を見る</button></a> </div> <div class="innerright"> <p><?php echo get_the_term_list( $post->ID,'kameicat','<ul class="catname categorylist"><li>', '</li><li>','</li></ul>'); ?> </p> <h2 class="archivetitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <!--<p class="archivedes"><?php $text = mb_substr(get_field('message'),0,100,'utf-8'); echo $text.'...'; ?></p>--> <p class="archivedes">TEL : <?php the_field('phone'); ?></br> <?php the_field('address'); ?></br> <?php the_field('open'); ?></br> <?php the_field('time'); ?></p></br> </div> <!-- /.article --></div> <?php endwhile; ?> <?php else: ?> <div class="article"> <p>現在該当するデータがございません。</p> <!-- /.article --></div> <?php endif; ?> <?php query_posts( array( 'post_type'=>'hikamei', ) ); ?> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <div class="article wd50"> <div class="innerleft"> <img src="http://test.site-madoguchi.com/wp-content/uploads/2016/09/東口商店街.png" alt="<?php the_field('store'); ?>" class="wh150 image2"> </div> <div class="innerright"> <p><?php echo get_the_term_list( $post->ID,'hikameicat','<ul class="catname categorylist"><li>', '</li><li>','</li></ul>'); ?> </p> <h2 class="archivetitle"><?php the_title(); ?></h2> <p class="archivedes">TEL : <?php the_field('phone'); ?></br> <?php the_field('address'); ?></br> <?php the_field('open'); ?></br> <?php the_field('time'); ?></p></br> </div> <!-- /.article --></div> <?php endwhile; ?> <?php else: ?> <div class="article"> <p></p> <!-- /.article --></div> <?php endif; ?> </div> <?php get_sidebar(); ?> </div> </div> <!-- /wrapper --> <script> var catnameUl = document.getElementsByClassName('catname'); i = 0; while(i<20) { catnameLi = catnameUl[i].childNodes; for (var l=0;l < 2;l++){ catnameInnerText = catnameLi[l].innerText; var catnameText01 = ['グルメ','カフェ/喫茶','ファーストフード','中華/ラーメン','和食','居酒屋/バー','洋食','焼肉/韓国料理/エスニック']; catnameText02 = ['ライフスタイル','アミューズメント/ホビー','カラオケ/ライブハウス','カルチャースクール','映画館/劇場','趣味/生活/占い','音楽/映画/本']; catnameText03 = ["ファッション","ビッグストア","メンズ","レディース","キッズ","ジュエリー/アクセサリー/靴","その他"]; catnameText04 = ["サービス","ビューティー/ヘアサロン","ホテル","メディカル","リラクゼーション","不動産/貸ビル","協力企業","金券ショップ/暮らし/質","銀行"]; s = 0; while(s < 7){ if (catnameInnerText.indexOf(catnameText01[s]) != -1) { catnameLi[0].className = 'catgsfl gourmet'; catnameLi[1].className = 'catgsfl gourmet'; } if (catnameInnerText.indexOf(catnameText02[s]) != -1) { catnameLi[0].className = 'catgsfl lifestyle'; catnameLi[1].className = 'catgsfl lifestyle'; } if (catnameInnerText.indexOf(catnameText03[s]) != -1) { catnameLi[0].className = 'catgsfl clothes'; catnameLi[1].className = 'catgsfl clothes'; } if (catnameInnerText.indexOf(catnameText04[s]) != -1) { catnameLi[0].className = 'catgsfl service'; catnameLi[1].className = 'catgsfl service'; } s++; } } i++; } </script> <?php get_footer(); ?> コード

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/14 01:43

カスタム投稿タイプ、タクソノミーをどのように追加したのか、プラグインやソースコードを記述してください。
kei344

2016/09/14 02:28

「参考サイト」ではなく「当該サイト」では。
SuzukiToshiyasu

2016/09/14 02:38

作業工程、使用プラグイン、ソースコード等追記しました。お手数おかけします。
SuzukiToshiyasu

2016/09/14 02:39

参考サイト⇛当該サイトに変更しました。
guest

回答1

0

ソースコードを確認する限り、記述通りの動きをしています。以下のようにすると(多分)理想に近づくんじゃないでしょうか。

  • query_postsの部分はpost_typeしか指定されていないので、taxsonomy・termを指定する
  • もしくは、pre_get_postsアクションでhikameiも含めるようにする

補足として、query_postsはメインクエリーを強制的に書き換えるので、必ずwp_reset_query関数でメインクエリーを元に戻してあげてください。

ドキュメントにも書かれているので、ご覧ください。
テンプレートタグ/query posts

投稿2016/09/14 04:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問