サポート » 使い方全般 » 新着情報の呼び出しでカスタムフィールドが消える

  • 解決済 takaraism

    (@takaraism)


    page.phpを改造し、
    新着情報を呼び出す構文の後にカスタムフィールドを呼び出す設定をつけたら
    カスタムフィールドが消えてしまう現象になり頭を痛めています。
    解決方法がありましたらご教授頂けたらと思います。
    問題のソースは下記のような物です。

    ————————————————————–

    <?php echo post_custom(‘カスタムフィールドA’)?>

    <dl>
    <?php $posts = get_posts(‘numberposts=7&category=6’);
    foreach($posts as $post): ?>
    <dt><?php echo date(“Y/m/d”, strtotime($post->post_date)); ?></dt>
    <dd>“><?php the_title(); ?></dd>
    <?php endforeach; ?>
    </dl>

    <?php echo post_custom(‘カスタムフィールドB’)?>

    ————————————————————–

    上記のソースでカスタムフィールドBが消えてしまいます。
    調べたところ
    ・新着情報は意図したとおりに表示できる
    ・カスタムBの所に、文字列やテンプレート呼び出しを入れてみたら、問題なくその通りに表示される
    ・<dl>の真下にカスタムフィールドBを持ってきたら表示される
    という感じです。

    page.phpに動的なデーターを呼び出すこと自体がアウトっぽい気がするのですが、
    何かよい解決方法はないでしょうか。
    宜しくお願い致します。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • get_postで$postを上書きしてしまっているせいではないでしょうか?

    下記のサイトのオフセットのリセットを参考にするとご希望通りの挙動ができるかと思います。
    get_posts

    もしくはget_postではなくWP_Queryを使う手もあります。

    >gogowebさん

    アドバイスありがとうございます。無事解決しました。

    <?php $posts = get_posts(‘numberposts=7&category=6’);
    foreach($posts as $post): ?>
    <dt><?php echo date(“Y/m/d”, strtotime($post->post_date)); ?></dt>
    <dd>”><?php the_title(); ?></dd>
    <?php endforeach; ?>

    の部分を

    <?php
    global $post;
    $tmp_post = $post;
    $myposts = get_posts(‘numberposts=7&category=6’);
    foreach($myposts as $post) :
    setup_postdata($post);
    ?>
    <dt><?php echo date(“Y/m/d”, strtotime($post->post_date)); ?></dt>
    <dd>“><?php the_title(); ?></dd>
    <?php endforeach; ?>
    <?php $post = $tmp_post; ?>

    としたら、無事カスタムフィールドBが出るようになりました。

    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「新着情報の呼び出しでカスタムフィールドが消える」には新たに返信することはできません。