サポート » プラグイン » 「Auto Post Thumbnail」の画像が壊れた表示になる

  • whiteowl_blackrabbit

    (@whiteowl_blackrabbit)


    みなさま、こんばんわ。「Auto Post Thumbnail」の使用に関して質問です。

    サムネイルを作成して記事一覧ページでアイキャッチ的に表示させたいのですが、
    表題のとおり、壊れた表示になってしまいます。

    なぜそうなるのか理由は判明していて、間違った画像のパスを書いてしまっています。
    ただその画像へのパスもプラグインのほうで自動で記述しているので、
    修正ができません(やり方がわかりません)。

    間違ったパスになってしまう理由は、おそらく私がオリジナルテーマ上で
    functions.phpに下記のコードを加えてパス指定を絶対パスから相対パスに変更させて
    いることが関係していると思います。

    function delete_host_from_attachment_url( $url ) {
        $regex = '/^http(s)?:\/\/[^\/\s]+(.*)$/';
        if ( preg_match( $regex, $url, $m ) ) {
            $url = '[domain]' . $m[2];
        }
        return $url;
    }
    add_filter( 'wp_get_attachment_url', 'delete_host_from_attachment_url' );
    
    function domain_shortcode() {
        if ( preg_match( '|^https?://[^/]+|', get_option( 'home' ), $m ) ) {
            $domain = $m[0];
        } else {
            $domain = '';
        }
        return $domain;
    }
    add_shortcode( 'domain', 'domain_shortcode' );

    このコードを削除すると、「Auto Post Thumbnail」の画像はきちんと表示されますが、
    ブログ記事内の画像がすべて壊れた表示になってしまいます。

    吐き出されるソースは、
    <img width="89" height="120" src="[domain]/example.com/wp-content/uploads/2012/05/test-112x150.jpg" class="attachment-120x120 wp-post-image" alt="" title="">
    となっており、ショートコードが入るため画像へのパスが間違っていることに
    なっている状態です。

    ショートコードの入ってしまっているブログの記事をすべて修正するのは件数が多く
    負担が大きいのと、相対パスでの表示をしたいためfunctions.phpのコードは
    残したいです。

    しかし、このプラグインもぜひ利用したいと思っているので、どうにか吐き出すパスが
    うまくいくようにさせたいです。

    なお、自分でプラグイン自体を編集するようなphpの素養はまったくありません。
    上記のfunctions.phpのコードもパスの記述が気になったのでネットで調べて
    対処法を見つけ、コピペさせてもらったものです。

    よろしくお願いいたします。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • モデレーター jim912

    (@jim912)

    whiteowl_blackrabbitさん、こんにちは。

    Auto Post Thumbnailの画像が表示されないのは、アイキャッチ画像を表示する際のコードがショートコードの展開処理を通っていないためですね。

    となると、このアイキャッチ画像のソースコードにショートコードの展開処理適用すればよいことになります。

    ショートコードの展開処理は、CODEXのショートコードで紹介されている通り、do_shortcodeで行えますので、functions.phpに下記を追加すれば、反映されるはずです。

    function do_shortcode_post_thumbnail( $html ) {
        return do_shortcode( $html );
    }
    add_filter( 'post_thumbnail_html', 'do_shortcode_post_thumbnail' );
    トピック投稿者 whiteowl_blackrabbit

    (@whiteowl_blackrabbit)

    jim912さん、いつもありがとうございます。

    コードを教えていただきありがとうございます。
    さっそくfunctions.phpに上記のコードを追記(パス指定を絶対パスから相対パスに変更するためのコードの後に書き足しました)してみましたが、残念ながら状況は変わらず…。
    吐き出してるソースも src=”[domain]/example.com…以下略 となっています。

    もう少しご助言いただけないでしょうか m(_ _)m
    よろしくお願いします。

    モデレーター jim912

    (@jim912)

    whiteowl_blackrabbitさん

    テンプレートファイルのAuto Post Thumbnailの画像を表示する部分のコードをご呈示いただけますか?

    トピック投稿者 whiteowl_blackrabbit

    (@whiteowl_blackrabbit)

    jim912さん、返信ありがとうございます。

    該当個所にはもともとあったソースに <?php the_post_thumbnail(array(100,100)); ?> を追記しただけで下記になります。

    <div>
    <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    <span>(<?php echo get_the_date('Y年m月d日'); ?>)</span></h4>
    <?php the_post_thumbnail(array(100,100)); ?><?php the_excerpt(); ?>
    </div>

    ちなみに、functions.phpに書いてるコード(パス指定を絶対パスから相対パスに変更と、教えていただいたコード)を削除すると、サムネイルは表示されます。

    よろしくお願いします。

    $url = ‘[domain]’ . $m[2];

    これが原因じゃないのかな~、とかPHP初心者ながらに思ってるのですが
    見当違いだったりしますかね?(;・∀・)

    $url = '[domain]' . $m[2];
    ↓
    $url = $m[2];

    にすればいいのではないでしょうか?
    多分、ですけど。

    トピック投稿者 whiteowl_blackrabbit

    (@whiteowl_blackrabbit)

    DesigningLaboさん、こんにちわ、返信ありがとうございます。

    さっそくやってみました。ですが、うまくいきませんでした…。
    サムネイルは壊れた表示のままですが、ソースには変化がありました。

    最初は
    <img width="89" height="120" src="[domain]/example.com/wp-content/uploads/2012/05/test-112x150.jpg" class="attachment-120x120 wp-post-image" alt="" title="">
    だったのですが、

    書き変えると、
    <img width="89" height="120" src="/example.com/wp-content/uploads/2012/05/test-112x150.jpg" />
    となっています。

    引き続き、アドバイスいただけると助かります。よろしくお願いします。

    jim912さんの

    function do_shortcode_post_thumbnail( $html ) {
        return do_shortcode( $html );
    }
    add_filter( 'post_thumbnail_html', 'do_shortcode_post_thumbnail' );

    で解消されませんか?
    僕がローカル環境でテストしてみた所、アイキャッチ表示されました。

    トピック投稿者 whiteowl_blackrabbit

    (@whiteowl_blackrabbit)

    DesigningLaboさん、こんばんわ

    解消されないんです…。どこか指示と違うことをしてしまってるのでしょうか…。

    functions.phpからコピペします。

    //+++++++++++++++++++++++++++++++++++++++++
    //パス指定を絶対パスから相対パスに変更
    function delete_host_from_attachment_url( $url ) {
        $regex = '/^http(s)?:\/\/[^\/\s]+(.*)$/';
        if ( preg_match( $regex, $url, $m ) ) {
            $url = $m[2];
        }
        return $url;
    }
    add_filter( 'wp_get_attachment_url', 'delete_host_from_attachment_url' );
    
    function domain_shortcode() {
        if ( preg_match( '|^https?://[^/]+|', get_option( 'home' ), $m ) ) {
            $domain = $m[0];
        } else {
            $domain = '';
        }
        return $domain;
    }
    add_shortcode( 'domain', 'domain_shortcode' );
    
    //+++++++++++++++++++++++++++++++++++++++++
    //プラグイン「Auto Post Thumbnail」の画像が壊れないために
    function do_shortcode_post_thumbnail( $html ) {
        return do_shortcode( $html );
    }
    add_filter( 'post_thumbnail_html', 'do_shortcode_post_thumbnail' );

    テンプレートのソースはいじってません。
    どこかコードのコピペミスをしてますでしょうか?

    $url = $m[2];

    これを最初のに戻してください。

    $url = '[domain]' . $m[2];

    じゃないと、jim912さんのコードが意味ないです(;・∀・)
    jim912さんのコードはショートコードを展開処理するものなので。
    ごめんなさい、僕が最初に余計なアドバイスしたせいですね。

    トピック投稿者 whiteowl_blackrabbit

    (@whiteowl_blackrabbit)

    DesigningLaboさん、こんばんわ。お付き合いいただきありがとうございます。

    DesigningLaboさんのせいではなく、最初にDesigningLaboさんから
    コメントいただいて試した後に戻すのを私が忘れてしまっていただけです。
    その時点でうまくいかなかったので(上に書いたとおりです)戻し忘れていました。

    jim912さんにいただいたコード2つをfunctions.phpにコピペした状態に戻して、
    念のためAuto Post Thumbnailでサムネイルを作る作業をもう一度やって、
    再読込しましたが、やっぱり壊れたままです。

    ソースは
    <img width="89" height="120" src="http://example.com/example.com/wp-content/uploads/2012/05/test-112x150.jpg" class="attachment-120x120 wp-post-image" alt="" title="" />
    となっています。

    [domain]という吐き出しはなくなっているんですが、ドメインが二回重なっているので壊れた表示になっています。
    ただ2日前に私の書き込みによると、吐き出していたソースは
     src=”[domain]/example.com…以下略 だったので、[domain] だったのが http://example.com に変わっています。
    2日前は再読込(コマンド+R)したのですが、キャッシュがちゃんと
    クリアされてなかったのかもしれません。すみません。

    functions.phpの記述↓

    //+++++++++++++++++++++++++++++++++++++++++
    //パス指定を絶対パスから相対パスに変更
    function delete_host_from_attachment_url( $url ) {
        $regex = '/^http(s)?:\/\/[^\/\s]+(.*)$/';
        if ( preg_match( $regex, $url, $m ) ) {
            $url = '[domain]' . $m[2];
        }
        return $url;
    }
    add_filter( 'wp_get_attachment_url', 'delete_host_from_attachment_url' );
    
    function domain_shortcode() {
        if ( preg_match( '|^https?://[^/]+|', get_option( 'home' ), $m ) ) {
            $domain = $m[0];
        } else {
            $domain = '';
        }
        return $domain;
    }
    add_shortcode( 'domain', 'domain_shortcode' );
    
    //+++++++++++++++++++++++++++++++++++++++++
    //プラグイン「Auto Post Thumbnail」の画像が壊れないために
    function do_shortcode_post_thumbnail( $html ) {
        return do_shortcode( $html );
    }
    add_filter( 'post_thumbnail_html', 'do_shortcode_post_thumbnail' );

    お尋ねするほか自力でできることがあまりなく心苦しいのですが、
    コメントいただけると助かります。よろしくお願いします。

    ん~、なんでしょうか。
    whiteowl_blackrabbitさんの提示していただいてるソースコードでテストをしてみたのですが
    僕の環境では再現できないんですよね(´;ω;`)
    テスト方法が悪いのか………
    他の場所が影響しているとかなんですかね?

    ん~、気になります。
    すみません、引っ張っといて、解決に繋がる回答を行えず。

    トピック投稿者 whiteowl_blackrabbit

    (@whiteowl_blackrabbit)

    DesigningLaboさん、こんにちわ。リプライありがとうございます。

    わざわざ試していただき本当にありがとうございます。
    再現できないということであれば、何か私の環境に問題があるようですね。

    プラグインは20ほど入れるので何かとかちあっているのか…。
    さっぱり検討がつきません。

    どちらかいっぽう(アイキャッチ表示か、ショートコードか)を諦めるしか
    なさそうですね。

    トピック投稿者 whiteowl_blackrabbit

    (@whiteowl_blackrabbit)

    自己補足です。解決ではないのですが…。

    jim912さんにいただいたコード2つをfunctions.phpにコピペした状態で、
    新規で写真付き記事をポストしてみたところ、ちゃんとアイキャッチが表示されました。

    もともとMTからWPへ移行したので、古い記事(インポートしたもの)は
    画像が壊れた表示になってしまいます。

    しかし、相対パスへ書き換えるコードをfunctions.phpに書き加えなければ
    古い記事もちゃんとアイキャッチが表示されますが…。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「「Auto Post Thumbnail」の画像が壊れた表示になる」には新たに返信することはできません。