お世話になります。使ってるwordpress3.31が不具合をお越し再インストールしてあらたに立ち上げました。一からインストールして0からのスタートにしたのですが、投稿した記事の関連記事をYARPPを使ってサムネイル表示していました。

新規投稿画面のカスタムフィールドに画像のアドレスを指定して投稿していたのですが、カスタムフィールドの名前の部分に???_thumbnail と表示されていたような気がするのですがまず、これが名前の部分に表示されていません。カスタムフィールド新規でrelated_thumbnail を作り投稿した画像のサムネイルURLを指定して投稿しているのですが投稿した記事の個別ページの関連記事の部分に画像なしで枠だけ表示されています。この画像のURLをみると「http://www.****.com/archives/default-image.jpg」となっており投稿時に指定したものと食い違ってるために表示されないようです。

YARPPでこのカスタムフィールドを使って関連記事をサムネイル画像で表示させる設定というのは何をすればいいのでしょうか?
YARPPのテンプレートは、テーマの中にアップしており関連記事をテンプレートを使って表示するにビットをいれています。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/03/10 09:06:09

ベストアンサー

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

以前の質問にあるソースを使用しているのでしたら、「thumbnail_url」というカスタムフィールドにサムネイル画像のURLを指定しなければならないと思います。

http://q.hatena.ne.jp/1304345706


以下の部分で$related_thumbnailにカスタムフィールド「thumbnail_url」の値を代入して、

        $related_thumbnail = get_post_meta($post->ID, "thumbnail_url", $single = true);


以下の部分で$related_thumbnailが空の為に、$default_thumbnailに指定された画像が出力されているようです。

        if ($related_thumbnail != "") {
            echo '<img src="' . $related_thumbnail . '" alt="' . the_title() . '" />';
        } else {
            echo '<img src="' . $default_thumbnail . '" alt="' . the_title() . '" />';
        }


※カスタムフィールドの名前を変更するのではなく、カスタムフィールド「related_thumbnail」が$related_thumbnailに代入されるようにテンプレートのソースを変更しても大丈夫です。

        $related_thumbnail = get_post_meta($post->ID, "related_thumbnail", $single = true);



【追記】

「the_permalink()」を「get_permalink()」に変更すると大丈夫です。
※他、「the_title()」を「get_the_title()」に変更しています。(以下24行目から一部抜粋しています。)

        echo '<a href="'. get_permalink() . '" rel="bookmark">';
        if ($related_thumbnail != "") {
            echo '<img src="' . $related_thumbnail . '" alt="' . get_the_title() . '" />';
        } else {
            echo '<img src="' . $default_thumbnail . '" alt="' . get_the_title() . '" />';
        }
        echo get_the_title() . '</a>';


「the_permalink()」、「the_title()」は、何れも出力まで行うタグですが、echoと一緒に使うと先に出力されてしまうようですので、取得だけ行うタグに変更しています。

  • id:dejavu888i
    <?php
    // original
    // http://ja-jp.facebook.com/note.php?note_id=101349730674
    ?>

    <h4 class="meta">Related Posts</h4>

    <?php
    if ($related_query->have_posts()) {
    $maxColumn = 4;
    $nowColumn = 0;
    $default_thumbnail = 'default-image.jpg';
    echo '<ol class="related-posts">';
    while ($related_query->have_posts()) {
    $related_query->the_post();
    $related_thumbnail = get_post_meta($post->ID, "thumbnail_url", $single = true);
    if ($nowColumn < $maxColumn) {
    echo '<li>';
    $nowColumn++;
    } else {
    echo '<li style="clear:both">';
    $nowColumn = 1;
    }
    echo '<a href="' . the_permalink() . '" rel="bookmark">';
    if ($related_thumbnail != "") {
    echo '<img src="' . $related_thumbnail . '" alt="' . the_title() . '" />';
    } else {
    echo '<img src="' . $default_thumbnail . '" alt="' . the_title() . '" />';
    }
    echo the_title() . '</a>';
    echo '</li>';
    }
    echo '</ol>';
    echo '<div class="clear"></div>'
    } else {
    echo '<p>No related posts found</p>';
    }
    ?>


    もう一つ問題がありまして前回教えて頂いた上記ソースをテンプレートにこのまま貼り付けてテンプレートを更新し、ブログの個別ページを表示するとレイアウトが崩れるというのかサイドバーもフッターも全て表示されなくなりヘッダーと投稿した記事のみになります。

    wp3.05の時のソースなんですが、3.13になって使えなくなってるってことなんでしょうか?
    PHP素人なもんで前回もコピペ状態で教えて頂いたもんですから大変申し訳ありませんが教えて頂けますでしょうか?
  • id:dejavu888i
    すんません。上記コメントの中のWP3.13ではなくて3.31の誤りでした。訂正いたします。
  • id:rouge_2008
    PHPのシンタックスエラーですので、3.05の時にも同様の現象があったのではないかと思いますが・・・
    後ろから5行目の行末にセミコロン「;」がない為、そこでエラーが起こって、以降の部分が表示されないようです。
    次のように行末に「;」を足してみてください。

    echo '<div class="clear"></div>';
  • id:dejavu888i
    どうもありがとうございました。ご指示のようにセミコロンを入れると治りました。

    ただ、関連記事として表示されたサムネイルをクリックしたときのリンクが上手くいってなくページに飛ばないのですが、再度ご指導お願いできますでしょうか?
    図々しくお願いして申し訳ございません。
  • id:rouge_2008
    回答の方に追記しましたので、確認してみてください。
  • id:dejavu888i
    出来ました!!希望どおりに復活できました。
    ほんまにいつもですが、親切丁寧に最後までご指導頂きましてありがとうございました。
    また、宜しくお願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません