web-dev-qa-db-fra.com

Modifier la taille de la vignette de la publication admin pour un type de publication personnalisé uniquement

Je souhaite modifier la taille de l'image affichée pour un type de message personnalisé uniquement. C'est ce que j'ai actuellement:

function custom_admin_thumb_size($thumb_size){

    global $post_type;
    if( 'slider' == $post_type ){

        return array(1000,400);

    }else{

        return array(266,266);
    }

}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size');

Cette fonction fait ce que je pensais, mais je me demandais s’il existe une meilleure méthode pour appeler le type de message personnalisé "slider" sans toucher les autres.

Merci d'avance

2
Wilco

admin_post_thumbnail_size prend trois paramètres:

  1. $ thumb_size: sélectionné Taille du pouce si vous ne faites rien dans le filtre.

  2. $ thumbnail_id: ID de pièce jointe miniature.

  3. $ post: instance associée WP_Post

Vous pouvez donc utiliser ces paramètres pour mieux contrôler votre CODE. Utilisez le code comme ci-dessous:

function custom_admin_thumb_size( $thumb_size, $thumbnail_id, $post ) {
    if( 'slider' === $post->post_type ) {
        return array( 1000, 400 );
    }

    return $thumb_size;
}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size', 10, 3);
3
Fayaz

Il n’existe aucun filtre permettant de le faire pour un certain type de post_type mais vous pouvez utiliser get_post_type( esc_attr( $_GET['post'] ) ) pour enregistrer 1 ligne de code.

Vous pouvez également retirer la déclaration else puisque votre déclaration si a une déclaration, elle ne le sera pas après. Autre que cela, c'est essentiellement ce que vous faites.

function custom_admin_thumb_size( $thumb_size ){

    if( 'slider' == get_post_type( esc_attr( $_GET['post'] ) ) ) {

        return array( 1000, 400 );

    }

    return array( 266, 266);

}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size' );
1