web-dev-qa-db-ger.com

Wie deaktiviere ich die Generierung von Standardbildgrößen für einige benutzerdefinierte Beitragstypen?

Ich habe einen benutzerdefinierten Beitragstyp verwendet, bei dem "Miniatur", "Mittel" und "Groß" nicht erforderlich sind. Ich muss diese Größen deaktivieren und eine Funktion oder ein Plugin erstellen, in dem ich festlegen kann, welche Bildgröße für jeden benutzerdefinierten Beitragstyp erforderlich ist.

Mein erster Schritt ist das Einbinden der Funktion get_intermediate_image_sizes aus wp-includes/media.php. Ich habe diesen Code zu functions.php hinzugefügt, aber es funktioniert nicht :(

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: Bearbeiten dieser Zeile in media.php funktioniert. Standardtypen nach Änderungen werden nicht generiert.

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

Aber wie mache ich meinen Haken?

12
Bohdan Hdal

Ich denke, die einzige Lösung, die Sie derzeit haben, besteht darin, alle Zwischenbildgrößen zu deaktivieren:

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

Und generieren Sie sie dann manuell, abhängig vom Beitragstyp, indem Sie sich in 'wp_generate_attachment_metadata' einhängen, wo Sie Zugriff auf die Anhangs-ID (und damit auf den übergeordneten Beitrag) haben:

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

  return $data;
}

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