新規投稿画面のカスタムフィールドに画像のアドレスを指定して投稿していたのですが、カスタムフィールドの名前の部分に???_thumbnail と表示されていたような気がするのですがまず、これが名前の部分に表示されていません。カスタムフィールド新規でrelated_thumbnail を作り投稿した画像のサムネイルURLを指定して投稿しているのですが投稿した記事の個別ページの関連記事の部分に画像なしで枠だけ表示されています。この画像のURLをみると「http://www.****.com/archives/default-image.jpg」となっており投稿時に指定したものと食い違ってるために表示されないようです。
YARPPでこのカスタムフィールドを使って関連記事をサムネイル画像で表示させる設定というのは何をすればいいのでしょうか?
YARPPのテンプレートは、テーマの中にアップしており関連記事をテンプレートを使って表示するにビットをいれています。
以前の質問にあるソースを使用しているのでしたら、「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と一緒に使うと先に出力されてしまうようですので、取得だけ行うタグに変更しています。
コメント(6件)
// 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素人なもんで前回もコピペ状態で教えて頂いたもんですから大変申し訳ありませんが教えて頂けますでしょうか?
後ろから5行目の行末にセミコロン「;」がない為、そこでエラーが起こって、以降の部分が表示されないようです。
次のように行末に「;」を足してみてください。
echo '<div class="clear"></div>';
ただ、関連記事として表示されたサムネイルをクリックしたときのリンクが上手くいってなくページに飛ばないのですが、再度ご指導お願いできますでしょうか?
図々しくお願いして申し訳ございません。
ほんまにいつもですが、親切丁寧に最後までご指導頂きましてありがとうございました。
また、宜しくお願いします。