通常
<?php echo get_post_custom_values(‘カスタムフィールドのキー’); ?>
などとしないと、カスタムフィールドは表示されないと思うのですが。
分かりづらくて申し訳ありません。
引用元の記事で、記事内にカスタムフィールドを表示するようにしています。
例:
Aページ
記事 「あああ」
カスタムフィールド 「いいい」として、
記事には「あああいいい」と表示されるようにしています。
BページでAページをsetup_postdata($post)したあとに、echo the_content()でAページの内容を表示すると、「いいいあああ」と表示されてしまいます。しかし「いいい」も表示されるのですが表示のコントロールができません。
そこでget_the_content()を利用して表示しようとしたのですが、あああ しか表示されません。
the_content()でいいいが表示されるということは、get_the_content()でもいいいが表示されると思うのですが、違うのでしょうか?
複雑で申し訳ありません。
Bページの投稿でAページをインクルードしてくるショートコードを使用していて、そのAページにはカスタムフィールドがあり、A記事内で該当カスタムフィールドを表示するような設定になっている、という理解でよかったでしょうか?
1.Aページでカスタムフィールドを表示するのはショートコードを利用している?ページ用テンプレートを作成し直に書き込んでいる?この部分のコードの提示が必要です。
2.Bページの記事内に書かれたショートコードがループを制御するようなコードの場合、Bページのループと干渉を起こしてしまうので、ショートコード内でループを制御するような書き方(例えばsetup_postdataを使用する方法など)は避けたほうがよいと思います。
最初の理解が間違っていたら解答が根本から違ってしまうので、その場合はご容赦を;)
shokun0803さん、いつもありがとうございます。
1については、じかにphpを書き込んでいます。具体的には
Aページではlinktitle,linkurl,linksitename,linkdate,linkarticleといったカスタムフィールドを作り、記事部分に下記コードをいれて表示させています。
<p>本文</p>
<div><?php echo post_custom('linktitle') ?> - <a href="<?php echo post_custom('linkurl') ?>" target="_blank">
<?php echo post_custom('linksitename') ?></a>:<?php echo post_custom('linkdate') ?></div>
<blockquote><p><?php echo post_custom('linkarticle') ?></p></blockquote>
Bページでは、ショートコードを使っていますが、そのコードは
function sc_post_tag($atts, $content = null) {
global $post;
$cur_tag[] = get_the_tags();
extract(shortcode_atts(array(
'num' => 10,
'tagname' => $cur_tag[0]->name,
'format' => 'Y/m/d'
), $atts));
$myposts = get_posts('numberposts=' . $num . '&order=DESC&orderby=post_date&tag=' . $tagname);
$retour='<ul>';
foreach ($myposts as $post) :
setup_postdata($post);
$quotedate = get_post_meta( $post->ID , 'linkdate' , true );
$retour.='<p><div class="tagnews"><a href="'.get_permalink().'">'.the_title("","",false).'</a>'.$quotedate.'</div>'.get_the_content().'</p>';
endforeach;
$retour.='</ul> ';
return $retour;
}
add_shortcode('post_tag', 'sc_post_tag');
としていて、
ためしに上記のように$quotedate = get_post_meta( $post->ID , ‘linkdate’ , true ); を入れて、quotedateを表示すると、Aの文章のカスタムフィールド内のlinkdateを引っ張ってきています。
A記事以外にいくつかの記事をループして取り込み表示することもできています。
前の書き込みにも書いたようにthe_content()でも表示できたので、get_the_content()で表示できるかな(横着ですね・・・)と思ったのですが、get_post_metaで個別に値を持ってきたほうがよいのでしょうか。
setup_postdata(なんちゃら);
を使ったら
wp_reset_postdata();
で元に戻してあげると何かと安心です。