問題描述

我使用自定義帖子型別,其中’thumbnail’,’medium’ 和’large’ 大小不需要。我需要停用此大小並建立功能或外掛,我可以設定,每個自定義帖子型別需要哪個影像大小。

我的第一步是從 wp-includes /media.php 掛接 get_intermediate_image_sizes 功能。我已經將這段程式碼新增到 functions.php,但它不工作:(

add_filter('get_intermediate_image_sizes', 'get_intermediate_image_sizes_fixed');
function get_intermediate_image_sizes_fixed() {
    global $_wp_additional_image_sizes;
    //$image_sizes = array('thumbnail', 'medium', 'large'); // Standard sizes
    $image_sizes = array();
    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) )
        $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
return apply_filters( 'intermediate_image_sizes', $image_sizes );
}

UPD:在 media.php 中編輯這行正在工作。預設型別更改後不生成。

$image_sizes = array('thumbnail', 'medium', 'large');

但是如何使工作成為我的鉤子?

最佳解決方案

我認為目前唯一的解決方案是停用所有中間影像大小:

add_filter( 'intermediate_image_sizes', '__return_empty_array', 99 );

然後透過掛接到 「wp_generate_attachment_metadata」,您可以訪問附件 ID(因此它是父帖子),手動生成它們,具體取決於帖子型別:

function do_your_stuff( $data, $attachment_id ) {
  // generate intermediate images

  return $data;
}

add_filter( 'wp_generate_attachment_metadata', 'do_your_stuff', 10, 2 );

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。