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

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

ただいまの
回答率

90.35%

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

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 490

■ 当該サイト : 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

'newsinfocat',// 新規カスタムタクソノミー名
'newsinfo',// 新規カスタムタクソノミーを反映させる投稿タイプの定義名
array(
'label' => __( 'newsinfocat' ),// 表示するカスタムタクソノミー名
'rewrite' => array( 'slug' => 'newsinfocat' ),// カスタムタクソノミースラッグ名
'show_ui' => true,
'hierarchical' => true,'
query_var' => true)
);
    register_post_type('kamei',
    array(
    'labels' => array(
    'name'     => '加盟店登録',
    'singular_name'     => '加盟店登録',
    ),
    'public' => true,
    'menu_position' => 5,
    'has_archive' => true,
    'publicly_queryable' => true,
    'supports' => array('title','editor','excerpt','thumbnail','custom-fields',),
    'taxonomies' => array('kameicat'),
)
);
        register_taxonomy(
'kameicat',// 新規カスタムタクソノミー名
'kamei',// 新規カスタムタクソノミーを反映させる投稿タイプの定義名
array(
'label' => __( 'kameicat' ),// 表示するカスタムタクソノミー名
'rewrite' => array( 'slug' => 'kameicat' ),// カスタムタクソノミースラッグ名
'show_ui' => true,
'hierarchical' => true,'
query_var' => true)
);
    register_post_type('hikamei',
    array(
    'labels' => array(
    'name'     => 'その他',
    'singular_name'     => 'その他',
    ),
    'public' => true,
    'menu_position' => 5,
    'has_archive' => true,
    'publicly_queryable' => true,
    'supports' => array(
    'title',
    'editor',
    'excerpt',
    'thumbnail',
    'custom-fields',
    ),
)
);
コード

■ 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(); ?>
コード
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • kei344

    2016/09/14 11:28

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

    キャンセル

  • SuzukiToshiyasu

    2016/09/14 11:38

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

    キャンセル

  • SuzukiToshiyasu

    2016/09/14 11:39

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

    キャンセル

回答 1

+1

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

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

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

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

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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