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

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

ただいまの
回答率

88.60%

WordPressのカスタム投稿でカテゴリ別の出力ができない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 4,857

no23h

score 37

お世話になります。
現在Wordpressで複数のプロジェクトページを固定ページで作成し、
各ページに担当者を表示する設計を行なっております。

担当者登録は以下のカスタム投稿で追加していけるようになっていまして、
各ページへの振り分け表示は、カテゴリ(プロジェクト名)にチェックを入れることで、
成立しようと設計しております。

// functions.php

// カスタム投稿
function create_post_type() {
  register_post_type( 'member', /* post-type */
    array(
      'labels' => array(
        'name' => __( 'メンバー' ),
        'singular_name' => __( 'メンバー' )
      ),
      'public' => true,
      'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields' ,'comments' ),
      'menu_position' =>4,
      'has_archive' => true
    )
  );

//カスタムタクソノミー、カテゴリタイプ
  register_taxonomy(
    'member-cat', //カテゴリー名(任意)
    'member', //カスタム投稿名
    array(
      'hierarchical' => true, //カテゴリータイプの指定
      'update_count_callback' => '_update_post_term_count',
      'label' => 'メンバーのカテゴリー',
      'singular_label' => 'メンバーのカテゴリー',
      'public' => true,
      'show_ui' => true
    )
  );
}
add_action( 'init', 'create_post_type' );

ここから質問ですが、
各プロジェクトのテンプレートデータに、以下コードでメンバーを表示しているのですが、
'category_name'を指定したとたん担当者が表示されなくなります。
('category_name'を指定しないと表示されるが、全プロジェクトの担当者が表示されてしまう)

//page-project1.php

<?php
$args = array(
    'post_type'=>'member',
    'category_name' => 'member-pro1', // 反映されない
    'posts_per_page' => -1
);
query_posts($args); ?>
<?php if (have_posts()) : while (have_posts()) : the_post();
?>
<?
// 名前
$name = get_field('name');
if($name){ ?><p><? echo $name; ?></p>
<? } ?>
<?
// 顔写真
$facePhoto = get_field('face-photo');
$facePhotoUrl = wp_get_attachment_image_src($facePhoto, 'full');
if($facePhotoUrl){ ?><img src="<? echo $facePhotoUrl[0]; ?>" alt=""></p>
<? } ?>
<?
// 肩書き
$job = get_field('job');
if($job){ ?><p><? echo $job; ?></p>
<? } ?>
<?
//担当プロジェクト
$ownProject = get_field('own-project');
if($ownProject){
    foreach((array)$ownProject as $value) {
        echo "担当プロジェクト:".$value;
    }
} ?>
<?
// 名前
$facebookUrl = get_field('facebook_url');
if($facebookUrl){ ?><p><a href="<? echo $facebookUrl; ?>" target="_blank">Facebook</a></p>
<? } ?>

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

カスタム投稿を使うのが初めてゆえ、なぜカテゴリが反映されないのか原因がわかりません。
原因がわかる方、ご教授いただけないでしょうか。
宜しくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

tax_query でできます。

【WordPressでカスタムタクソノミーの投稿を絞込み | Blog | 06.GRASSHOPPER】
https://ghweb.info/post-3685.html


当該の問題とは関係ありませんが、query_posts はお勧めしません。WP_Query か get_posts を使いましょう。

【WordPressで押さえておきたい!get_posts,WP_Query,query_posts の違いと用例|テクニカルブログ|株式会社エムハンド】
http://www.m-hand.co.jp/program/4119/

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/06/25 04:07

    ご回答ありがとうございました。
    無事表示することができました。Wordpressは奥が深いですね...
    またquery_postsの件も教えていただきましてありがとうございます!

    キャンセル

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

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

関連した質問

同じタグがついた質問を見る