web-dev-qa-db-fra.com

Filtrage de la taille de l'image dans le programme de téléchargement du média en fonction du type de publication personnalisé

J'ai trois types de publication personnalisés qui nécessitent un téléchargement d'image dans la page de modification de la publication admin.

Chaque type a son propre paramètre de taille d'image. Disons:

  • 'nouvelles' type => taille de l'image requise: 700x320px
  • Type de travail => taille de l'image requise: 700x430px
  • type de presse => taille de l'image requise: 460x600px

J'ai réussi à supprimer les paramètres de taille d'image par défaut et à ajouter ces 3 nouveaux paramètres dans Media Uploader, mais je n'ai pas besoin qu'ils s'affichent sous forme de boutons radio, car je ne souhaite pas que les utilisateurs sélectionnent quoi que ce soit concernant les formats. télécharger des photos.

Ce que je voudrais plutôt, c'est que Media Uploader définisse immédiatement le réglage précis de la taille de l'image en fonction du type personnalisé de la publication, sans aucune intervention de l'utilisateur.

Est-ce possible?

J'ai essayé d'interroger le post_type depuis Media Uploader Iframe, mais cela me donne au mieux le type de message "pièce jointe" (ce qui est logique car il s'agit du type de message de l'image qu'il essaie de télécharger) pendant que j'essaie d'obtenir le type personnalisé. de la poste que je suis sur le point de publier.

Et si je ne parviens pas à obtenir le type personnalisé de la publication, je ne vois pas comment je peux obtenir que Media Uploader définisse la taille en conséquence.

Je ne sais tout simplement pas comment le faire fonctionner. Toute aide serait appréciée.

Voici mon script jusqu'à présent:

function media_image_delete_sizes($sizes) 
{
    unset($sizes['thumbnail']);
    unset($sizes['medium']);
    unset($sizes['large']);

    return $sizes;
}
add_filter('image_size_names_choose', 'media_image_delete_sizes');

add_image_size( 'news-size' , 700, 320,true);
add_image_size( 'work-size' , 700, 430,true);
add_image_size( 'press-size', 460, 600,true);

function media_image_add_sizes($sizes) 
{
    // I would like not to show any of these new image sizes 
    // (I will probably hide them via css or jQuery)    
    $addsizes = array(
        "news-size"  => "News  (700x320)",
        "work-size"  => "Works (700x430)",
        "press-size" => "Press (460x600)"
    );
    $newsizes = array_merge($sizes, $addsizes);

    return $newsizes;
}
add_filter('image_size_names_choose', 'media_image_add_sizes');


function theme_default_image_size() 
{       
    //This variable will retrieve the post_type of the picture post, not the one of the 
    //underlying CPT post
    global $post_type;

    // Here is the place where I tried to place the conditional return
    // but I just can't succeed in retrieving the CPT post_type as I always get "attachment".

    if     ($post_type == "news" ){ return 'news-size';}
    elseif ($post_type == "work" ){ return 'work-size';}
    elseif ($post_type == "press"){ return 'press-size';}
    else                          { return 'this-doesnt-work';};
}
add_filter( 'pre_option_image_default_size', 'theme_default_image_size' );

Je vous remercie.

1
Baylock

Ajoutez le code suivant dans votre fichier themes.php de themes

function theme_set_default_image_size() {
global $post_type;
$custom_image_size = 'medium';   

if($post_type == 'news')
    $custom_image_size = 'news_image_size';
else if($post_type == 'product')
    $custom_image_size = 'product_image_size';
else if($post_type == 'service')
    $custom_image_size = 'service_image_size';

return $custom_image_size;
}
add_filter( 'pre_option_image_default_size', 'theme_set_default_image_size' );
1
Vinod Dalvi