サポート » 使い方全般 » カスタム投稿タイプ内の特定の記事だけ呼び出したい

  • 解決済 Junko Nukaga

    (@nukaga)


    カスタム投稿タイプで投稿した特定の記事を呼び出したいのですが書き方がわかりません。
    カスタム投稿タイプ「採用情報」の「新卒募集」だけを、他のテンプレート内に呼び出したいです。

    <?php query_posts('post_type=recruit'); ?>
    でカスタム投稿タイプrecruitに入っている全ての記事が呼び出せることはわかったのですが
    recruitの中の新卒募集を呼び出すという書き方がわからず詰まっています。

    現在書いているソースは以下になります。

    <?php // 新卒募集 ?>
    	<?php query_posts('post_type=recruit'); ?>
    	<?php if(have_posts()): while(have_posts()): the_post(); ?>
    	<?php the_content(); ?>
    	<?php endwhile;endif; ?>
    <?php //新卒募集 ?>

    色々と調べましたが、うまくいかず困っています。ご教授いただければ幸いです。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • 「新卒募集」はタクソノミーでしょうか?

    言い換えますと、

    ポストタイプ「採用情報(recruit)」投稿内のタクソノミー「新卒募集(???)」の投稿一覧を取得する

    で合ってますか?

    「新卒募集」とはWordPressのどの機能を利用して設置されていますか?
    カスタムフィールド?タクソノミー?

    どの機能で実現しているかによって、実装方法が変わってきます。

    ありがとうございます。
    「新卒募集」は記事です。わかりにくくてごめんなさい。

    カスタム投稿タイプのカスタムタクソノミー「採用情報」の中に「新卒募集」という記事を書いていて(スラッグはgraduatea)、その記事のみを呼び出したいです。

    (この書き方であっているかも不安)

    「新卒募集」は記事です。

    では、わかりません。
    記事タイトルなのか、記事内容なのか、ひとつの記事(post)で扱う情報の種類は多岐に渡るので、明確にしないと回答できません。

    「新卒募集」は記事タイトルで、その記事の内容を呼び出したいです。記事につけているスラッグは「graduatea」になります。

    <?php // 新卒募集 ?>
    	<?php query_posts('採用情報のタクソノミースラッグ=graduatea&post_type=recruit'); ?>
    	<?php if(have_posts()): while(have_posts()): the_post(); ?>
    	<?php the_content(); ?>
    	<?php endwhile;endif; ?>
    <?php //新卒募集 ?>

    でいける気がしますが、どうでしょう?

    http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts#.E3.82.BF.E3.82.AF.E3.82.BD.E3.83.8E.E3.83.9F.E3.83.BC.E5.BC.95.E6.95.B0
    ↑4.4 タクソノミー引数参照

    add_filter('posts_where', 'my_post_where');
    function my_post_where( $where ) {
    	global $wpdb, $wp_query;
    
    	if ( is_admin() || !is_main_query() )
    		return $where;
    
    	if ( [ここに新卒募集記事のみを表示させたいページの条件を書く] )
    		$where .= "AND {$wpdb->posts}.post_title LIKE '%新卒募集%'";
    	return $where;
    }

    なるほど、タイトルに新卒募集が含めれている記事のみを表示させるのであれば、上記のcodeでをfunctions.phpに追加すればいけると思います。

    [ここに新卒募集記事のみを表示させたいページの条件を書く] というところに新卒募集の記事一覧を出したいページを表示する条件を書いて下さい。

    カスタムポストrecruitの記事一覧で表示させたいのであれば

    is_archive() && get_post_type('recruit')

    を入れてやれば良いです。

    ありがとうございます。しかしダメでした…。
    採用情報のタクソノミースラッグが
    recruit_cat
    だったので、

    <?php // 新卒募集 ?>
    	<?php query_posts('recruit_cat=graduatea&post_type=recruit'); ?>
    	<?php if(have_posts()): while(have_posts()): the_post(); ?>
    	<?php the_content(); ?>
    	<?php endwhile;endif; ?>
    <?php //新卒募集 ?>

    としてみたのですが、何も表示されませんでした。

    ちなみに

    <?php // 新卒募集 ?>
    	<?php query_posts('taxonomy=recruit_cat=graduatea&post_type=recruit'); ?>
    	<?php if(have_posts()): while(have_posts()): the_post(); ?>
    	<?php the_content(); ?>
    	<?php endwhile;endif; ?>
    <?php //新卒募集 ?>

    とすると、他の採用情報内の記事も全て出てしまいました。
    もう少し自分でも模索してみます。

    ありがとうございます。2番目の方法も試してみます!

    モデレーター Takuro Hishikawa

    (@hissy)

    これでいいじゃん

    <?php
    // graduateaというスラッグの記事を取得、投稿タイプはrecruit
    $post = get_page_by_path('graduatea','OBJECT','recruit');
    setup_postdata( $post );
    the_content();
    wp_reset_postdata();
    ?>

    ありがとうございます!
    hissyさんの方法でいけました。

    言葉足らずなのに汲んでくださって、解決まで持って行ってくださって、皆さまありがとうございました!

    モデレーター Takuro Hishikawa

    (@hissy)

    記事1件なら get_page_by_path とかで取ってきたらいいやと思ったけど、ループを使って、もう少しまじめに書くなら。

    <?php
    $args = array(
    	'pagename' => 'graduatea',
    	'post_type' => 'recruit'
    );
    query_posts($args);
    while(have_posts()): the_post();
    	the_content();
    endwhile;
    ?>

    お好みでget_postsを使って。

    <?php
    $args = array(
    	'pagename' => 'graduatea',
    	'post_type' => 'recruit'
    );
    $myposts = get_posts($args);
    
    foreach ( $myposts as $post ) :
    	setup_postdata($post);
    	echo $post->post_content;
    endforeach;
    ?>

    ありがとうございます。
    最初に知ったのがquery_postsだったので、そちらばかり調べていたのですが、こんな方法があったのですね。

    query_postsとget_postsの違いがピンとこなかったので、フォーラム外ですがhissyさんの下記記事も参考に読ませて頂きました。
    http://notnil-creative.com/blog/archives/1384

    今回は1件だけの取得で良かったので先に教えて頂いたget_page_by_pathで問題なかったのですが、自分でもう少し触っていけるように頑張ります。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「カスタム投稿タイプ内の特定の記事だけ呼び出したい」には新たに返信することはできません。