サポート » 使い方全般 » add_image_size()をPDFファイルにも適用させたい

  • 解決済 d.w.c

    (@dwc-1)


    現在、functions.phpに下記コードを記述しています。

    //オリジナルサムネイルを作成
    add_action('after_setup_theme','thumbnail_original_size');
    function thumbnail_original_size(){
      add_image_size('thumbnail-original', 300, 300, false);
    }
    
    //ACFプラグインのフロントエンドフォームからの投稿で、不要な画像サイズを作成させない
    add_action('acf/pre_save_post', 'remove_image_sizes_wrapper');
    function remove_image_sizes_wrapper( $post_id ){
      add_filter('intermediate_image_sizes_advanced', 'remove_image_sizes');
      return $post_id;
    }
    
    function remove_image_sizes( $sizes ){
      unset( $sizes['medium']);
      unset( $sizes['large']);
    
      return $sizes;
    }

    ACFプラグインを利用したフロントエンドからの投稿acf_form()で、『オリジナルの画像サイズの追加』&『デフォルト自動生成画像の中で不要なものを無効化』させています。

    このコードは対象のメディアがjpegやpngの場合はうまくいくのですが、pdfをアップロードした時はオリジナルの画像サイズも作成されないですし、無効化した画像サイズも作成されてしまっています。
    add_image_size()unset()をpdfファイルにも対応させるにはどうすればいいでしょうか?

    unset()は無理でもいいのですが、add_image_size()の方は何とかしたいです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック投稿者 d.w.c

    (@dwc-1)

    1年ちょっと前に海外で同じような質問があるみたいです。
    https://wordpress.org/support/topic/pdf-upload-handle-thumbnails/
    ここではプラグインを使うってことで話が終わってしまっています。

    wordpressのバージョン4.7.1以降はPDFにもadd_image_size()は効くんじゃないんですかね・・・
    #39231 – PDF fallback_intermediate_image_sizes フィルターを add_image_size() のサイズ処理にも適用する

    これはバグなんでしょうか。
    Google翻訳越しだと細かいことまではよくわからないです・・・

    こんにちは

    PDF はサムネイルが生成されるプロセスがちょっと違うみたいですね。
    デフォルトでは
    thumbnail
    medium
    large
    が作成されます。

    独自に追加したサイズの名前が test_size だとして、以下のコードをテーマの functions.php かどこかに追加してください。
    生成されると思います。

    function my_fallback_intermediate_image_sizes( $fallback_sizes, $metadata ){
    	$fallback_sizes[] = 'test_size';
    	return $fallback_sizes;
    }
    add_filter( 'fallback_intermediate_image_sizes', 'my_fallback_intermediate_image_sizes', 10, 2 );
    トピック投稿者 d.w.c

    (@dwc-1)

    @munyagu さん
    すごい!!
    できました!!!

    functions.php

    // オリジナル画像サイズを作成
    function thumbnail_original_size() {
        add_image_size('thumbnail-original', 300, 300, false);
    }
    add_action('after_setup_theme','thumbnail_original_size');
    
    // オリジナル画像サイズをPDFに反映 & 不要なサイズを除外
    function my_fallback_intermediate_image_sizes( $fallback_sizes, $metadata ){
    	
    	// 不要なサイズを除外
    	foreach( $fallback_sizes as $key => $size_name ){
    		$unset_size = array( "medium", "large" ); //fullは消せないもよう
    		if( in_array( $size_name, $unset_size )){
    			unset( $fallback_sizes[ $key ] );
    		}
    	}
    	
    	// 必要なサイズを適用
    	$fallback_sizes[] = 'thumbnail-original';
    
    	return $fallback_sizes;
    }
    add_filter( 'fallback_intermediate_image_sizes', 'my_fallback_intermediate_image_sizes', 10, 2 );

    上記のように記載して必要な画像サイズを作成し、不要なものを削除することに成功しました。ありがとうございます。
    (作成されるjpegはthumbnail thumbnail-original fullのみに変更)

    実際はfullの画像も不要なんですけど、これはほかのサイズを作成するときの大元になってるのかこのコード内では消せませんでした。が、まあ大した問題ではないのでこのままにしておこうと思います。

    • この返信は4年、 8ヶ月前にd.w.cが編集しました。
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「add_image_size()をPDFファイルにも適用させたい」には新たに返信することはできません。