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

12

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: Das 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?

Bohdan Hdal
quelle
1
Ich
2
So benutzt man diesen Filter nicht. Um die Standardgrößen zu löschen, müssen Sie sie nur mit einer sehr niedrigen Priorität hinzufügen und ein leeres Array zurückgeben. Dies wird Ihr Problem jedoch nicht lösen, da dies alle Beitragstypen betrifft. Ich glaube nicht, dass es in der aktuellen WP-Version eine Möglichkeit gibt, das zu tun, was Sie wollen. Fordern Sie WP devs auf, das $attachment_idArgument dem Filter in dieser Funktion hinzuzufügen . Auf diese Weise können Sie den Post-Typ in Ihrem Hook überprüfen
onetrickpony
Mein Schritt ist nur ein Experiment, aber keine vollständige Lösung. Wie kann ich Filter richtig einsetzen? PS Vielen Dank für den Link ..
Bohdan Hdal
Irgendwelche Änderungen an WP, die es jetzt möglich machen?
Drivingralle
Keine Änderungen. Immer noch das gleiche Problem.
Bohdan Hdal

Antworten:

7

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 );
scribu
quelle
Was sind die 10 & 2 Parameter, die Sie an den letzten add_filter übergeben?
Luke