CG
(@du-bist-der-lenz)
「予め設定しておいたサムネイルがなかった時用画像」は作成されているのでしょうが、デフォルト数値に入っているべき画像のURLが間違っているとか、ありませんか。
試された先に書かれている通り、the_post_thumbnail()で、アイキャッチが設定されているか判定して代入すればよいです。プラグインを参照するのが簡単かもしれません。投稿されている最初の画像を、アイキャッチにすることも方法に出来ます。
>デフォルト数値に入っているべき画像のURLが間違っているとか、ありませんか。
ブラウザへURL直打ちで表示できた画像URLを、フルパスで入れてみてるんですが、何故か表示されません。。
最初の質問に記載したURL先の以下のコードをfunctions.phpの最後に記述して動作チェックしています。
function post_thumbnail_set () {
if( has_post_thumbnail() ) {
echo ‘<p class=”thumbnail-wrap”>’; the_post_thumbnail(); echo ‘</p>’; echo “\n”;
} else {
echo ‘<p class=”thumbnail-wrap”></p>’; echo “\n”;
}
}
CG
(@du-bist-der-lenz)
当初の状況での、補足がほしいのですが。アイキャッチが設定されている場合は、記事ごとのサムネイルが表示される条件分岐は出来ているのね。そのうえで、ブラウザへURL直打ちで表示できた画像が認識されていない状態でしょうか。
—-
function post_thumbnail_set () {
if( has_post_thumbnail() ) {
echo ‘<p class=”thumbnail-wrap”>’; the_post_thumbnail(); echo ‘</p>’; echo “\n”;
} else {
echo ‘<p class=”thumbnail-wrap”></p>’; echo “\n”;
}
}
—-
上記コードを削除した状態ですと、新規記事を開いた際、アイキャッチは登録されていません。
記事内に何かしら画像を使用して公開を押すと、記事内で使用された画像が自動でアイキャッチに登録されます。
上記コードをfunction.phpに追加し、新規記事を開いた際、アイキャッチは登録されていません。
記事内に画像を使用せず、公開を押すと上記コードで指定していた画像がアイキャッチに登録されるコードだと認識していたのですが、実際は登録されません(今回の質問)。
画像URLはフルパスで入力しており、ブラウザへ打ち込むと普通に表示できる画像です。
アイキャッチ登録のfunction.phpへの記述は上記コードの前に、以下のURL先のコードを記述しています。
http://nelog.jp/auto-post-thumbnail-custum
http://infinityforest.net/home/archives/1559
>そのうえで、ブラウザへURL直打ちで表示できた画像が認識されていない状態でしょうか。
はい、そうです。
CG
(@du-bist-der-lenz)
「記事内に何かしら画像を使用して公開を押すと、記事内で使用された画像が自動でアイキャッチに登録されます。」とある通りであるなら、問題の切り分けは、この点からはじめます。
こんにちは
「予め設定しておいたサムネイルがなかった時用画像を自動設定したい」
というのは、
(A) 投稿のアイキャッチとして保存したい。
(B) 投稿が公開されたときに一覧や詳細画面で表示されれば良い。(投稿自体にアイキャッチが保存されなくて良い)
のどちらでしょうか?
記述されているコード(post_thumbnail_set関数)がやっているのは(B) です。
管理画面で投稿を保存しても、アイキャッチに画像が登録されている状態にはなりません。
(A) 投稿のアイキャッチとして保存したい。
です。あくまで記事投稿画面や、RSSでのみ表示させ、記事内に強制的に画像を差し込みたいという意図ではありません。
CG
(@du-bist-der-lenz)
再度の念押しですが、「記事内に何かしら画像を使用して公開を押すと、記事内で使用された画像が自動でアイキャッチに登録されます。」の動きが、影響しているように思えます。
http://nelog.jp/auto-post-thumbnail-custum
挙げられているこちらのソースに、
//サムネイルの取得に成功したらPost Metaをアップデート
if ($thumb_id) {
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
break;
}
とあるので、この
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
が、サムネイルを登録するコードだと思います。
なので、コンテンツ中に画像がない場合にupdate_post_meta
してやります。
コンテンツ中に画像があるかどうかチェックしているのは、130行目のif (count($matches)) {
と思われます。
ですので、186行目の}
の後ろからelse句を追加して
} else { //186行目
update_post_meta( $post->ID, '_thumbnail_id', ここに画像のID );
}
というコードを追加すればサムネイルとして保存できると思います。
画像のIDはメディアライブラリで画像をクリックすればURLのitemというパラメータに設定されています。
実際にあてはめて動かしたわけではないので、参考程度にお願いします。
これでも動くと思うのですが、サムネイルがすでに登録されているかどうかをチェックしている処理がないため、なにかサムネイルを登録しても、毎回上書いてセットされてしまう気がします。
もしこれを回避したいなら、has_post_thumbnail
などでチェックしたら良いと思います。
munyaguさん
くわしいご説明ありがとうございます。
ただ動きませんでした。。
ソース全体がわからないので何とも言えませんが、デフォルト画像を分岐から出してそれだけ実行してセットされるか、ちゃんと分岐に入っているかなどしてデバッグしてみて下さい。