サポート » 使い方全般 » ssl対応したらサムネイルの指定が解除されてしまった

  • 解決済 aki

    (@akistar02)


    お世話になります。
    先日、フォーラムでも相談させていただいたのですが、サイトをssl化しました。ただその際に今まで表示されていた記事のサムネイル画像がリセットされてしまい困っています。

    というのは、たとえば

    
    $thumbnail_id = get_post_thumbnail_id($post->ID);
    $getImage = wp_get_attachment_image_src( $thumbnail_id, 'functions.phpで指定した画像サイズ' );
    ~
    

    として指定したサムネイルを取得しても、そのサイズのアイキャッチ画像が取得できず、まるで生成前のwidthやheightが無理やりそのサイズになってしまっているような状態になってしまうのです。
    <img src="実際はフルサイズの画像.jpg" width="100" height="100" />の状態です。

    サムネイル自体はURLをたたけば出てくるので、DBで結びつきが取れてしまったのかなと推測しています。
    再生成すればいいのかもですが、記事数とアイキャッチ数が多く(30000個以上)プラグインでやるとサイトが重くなる&そもそも途中で生成が止まってしまうという問題が発生しています・・・

    プラグインに頼らないでなおかつ高速に再生成できないかと模索はしているのですが、

    
    $imgpath = get_attached_file( $attachment_id );
    $metadata = wp_generate_attachment_metadata( $attachment_id, $imgpath );
    if (!empty( $metadata ) && ! is_wp_error( $metadata ) ) {
        wp_update_attachment_metadata( $attachment_id, $metadata );
    }
    

    http://celtislab.net/archives/20140131/wordpress-thumbnail-regenarate/

    こちらを応用し、1件ずつ処理する方法を実行したのですが、これでも途中で止まってしまいます。

    聞きたいことは
    ①なぜか結びつきがなくなってしまったサムネイルを再度結び付けたい
    ②それが不可なら可能な限り高速にサムネイルを再生成する方法

    というのが知りたいです。

    ちなみに私が今②をしている方法としては、jsと連動させて1件処理するごとにhtml⇔PHPをリダイレクトで往復させることで、PHPを連続稼動させないようにという方法なのですが、これでも1件の処理がそもそも重過ぎるという問題があります・・・

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

    • このトピックはakiが7年、 6ヶ月前に変更しました。
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック投稿者 aki

    (@akistar02)

    すでに画像はあるので、下記でいけるかと思ったのですが駄目でした。
    attach_data をprint_r()するとほしいサムネイルの情報が出てくるので、いい線行ってるかと思っています・・・

    
    $filename = wp_get_attachment_image_src(get_post_thumbnail_id(66860), 'full');
    $filename = $filename[0];
    $filename = '/パス/wp-content/uploads/2016/09/ファイル名.jpg';
    $parent_post_id = 66860;
    $filetype = wp_check_filetype( basename( $filename ), null );
    $wp_upload_dir = wp_upload_dir();
    $attachment = array(
            'guid'           => $wp_upload_dir['baseurl'] . $filename,
            'post_mime_type' => $filetype['type'],
            'post_title'     => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
            'post_content'   => '',
            'post_status'    => 'inherit'
    );
     
    $attach_id = wp_insert_attachment( $attachment, $wp_upload_dir['basedir'] . $filename, $parent_post_id );
    $attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
    $result = wp_update_attachment_metadata( $attach_id, $attach_data );
    
    

    wp_get_attachment_image_srcは http:// からのURLを出してしまうそうなので(未検証)、そういうのが原因かもしれません。

    http://cms.helog.jp/wordpress/ssl/

    などを参考に https:// になるように工夫をしてみてはいかがでしょうか。

    もっと簡単な方法があればよいですけどね..

    トピック投稿者 aki

    (@akistar02)

    ありがとうございます。
    試してみたのですが駄目でした・・・

    URLはhttpsのものを吐き出しているように見えますね・・・

    まったく持って原因不明でいやになりますw
    10日かかる重い自動再生パッチを当ててますが、アクセス数が駄々下がりで辛いですw

    いい方法があればいいんだけど・・・

    コードじゃなくて問題の箇所のhtml部分を示せば別の意見も出てくるのでは。

    $getImage = wp_get_attachment_image_src( $thumbnail_id, ‘functions.phpで指定した画像サイズ’ );

    の’functions.phpで指定した画像サイズ’ですけど、ここって設定は正しいですか。
    たとえば、サイズ指定ではなくて

    $getImage = wp_get_attachment_image_src( $thumbnail_id, ‘thumbnail’ );

    など標準のサムネイル(関数が用意しているもの)をつかうと、それなりに小さくなりますか。

    トピック投稿者 aki

    (@akistar02)

    解決はしなかったのですがこれ以上は進展が無いと思うので解決済みにしてクローズします。
    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「ssl対応したらサムネイルの指定が解除されてしまった」には新たに返信することはできません。