「新卒募集」とは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番目の方法も試してみます!
これでいいじゃん
<?php
// graduateaというスラッグの記事を取得、投稿タイプはrecruit
$post = get_page_by_path('graduatea','OBJECT','recruit');
setup_postdata( $post );
the_content();
wp_reset_postdata();
?>
ありがとうございます!
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で問題なかったのですが、自分でもう少し触っていけるように頑張ります。