[Résolu] Colonne image dans récapitulatif commande woocommerce (Créer un compte)

  • WordPress :5.8
  • Statut : résolu
8 sujets de 1 à 8 (sur un total de 8)
  • Auteur
    Messages
  • #2411637
    Broussaille
    Participant
    Chevalier WordPress
    356 contributions

    Ma configuration WP actuelle :
    – Version de WordPress : 6.0.1
    – Version de PHP/MySQL : 7.4.30 / 10.3.35
    – Thème utilisé : Broussaille theme
    – Extensions en place :

    • 3D FlipBook : Dflip Lite (1.7.31)
    • Advanced Editor Tools (previously TinyMCE Advanced) (5.6.0)
    • Boxtal Connect (1.2.14)
    • Classic Widgets (0.3)
    • Complianz | GDPR/CCPA Cookie Consent (6.2.4)
    • Contact Form 7 (5.6.1)
    • Enhanced Media Library (2.8.9)
    • Flamingo (2.3)
    • Forum_wordpress_fr (4.2)
    • Imagify (2.0)
    • Lightbox with PhotoSwipe (4.0.6)
    • MailPoet 3 (New) (3.92.1)
    • MailPoet 3 Premium (New) (3.92.0)
    • o2switch – WpTiger (21-05-22)
    • Preview E-mails for WooCommerce (2.0.3)
    • Rank Math SEO (1.0.93.1), Widget Logic (5.10.4)
    • WooCommerce (6.7.0)
    • WooCommerce Stripe Gateway (6.4.3)
    • WP Mail Logging (1.10.4)
    • WP Mail SMTP (3.5.1)
    • WP Rocket (3.11.4.2)

    – Adresse du site : https://3d34-77e1d8b602b6.wptiger.fr
    – Nom de l’hébergeur : o2switch

    Problème(s) rencontré(s) :

    Bonjour à toutes & à tous.

    Je souhaite ajouter une colonne dans la récapitulative des commandes WooCommerce (dans le tableau de bord), pour y afficher une miniature du produit vendu.

    J’arrive bien à ajouter la colonne, mais je suis incapable de trouver comment ajouter les données qui m’intéresse.

    Voilà le code testé :

    /* Création des colonnnes personnalisées */
    function custom_shop_order_column($columns) {
    return array_merge($columns,
    array('thumb' => __('Miniature')));
    }
    add_filter('manage_edit-shop_order_columns', 'custom_shop_order_column', 10 );

    // Affichage des données
    add_action('manage_edit-shop_order_columns', 'custom_shop_order_column');
    function data_colonne($name) {
    global $shop_order;
    switch ($name) {
    case 'thumb':
    if(has_shop_order_attachment_thumbnail($shop_order->ID)) { ?>
    <a href="<?php the_permalink(); ?>" target="_blank">
    <?php the_shop_order_attachment_thumbnail(array(70,70));?>
    </a>
    <?php } else {
    _e('No Thumbnail','storefront');
    }
    break;
    }
    }

    La partie « création », c’est OK, mais le reste c’est n’importe quoi (toute la partie affichage des données > des tests en cours….), je ne sais pas comment appeler ce « thumbnail ». (Il y a bien une image dans les commandes (attachment-thumbnail size-thumbnail), mais elle n’est visible que quand l’on consulte chaque commande individuellement (il faut donc l’ouvrir), et c’est très galère…)

    Vous avez une idée ?

    J’ai cherché et testé de multiples « snippet », mais aucun résultat (si l’on excepte les erreurs critiques)…

    Merci.

     

     

     

     

     

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2411643
    ferman
    Modérateur
    Maître WordPress
    7485 contributions

    Bonjour,

    J’ai cherché et testé de multiples « snippet », mais aucun résultat (si l’on excepte les erreurs critiques)…

    Alors en partant de celui-ci et de celui-là et en touillant un peu, j’obtiens ça:

    // Add a new custom column to admin order list
    add_filter( 'manage_edit-shop_order_columns', 'admin_orders_list_add_column', 10, 1 );
    function admin_orders_list_add_column( $columns ){
    $columns['custom_column'] = __( 'New Column', 'woocommerce' );

    return $columns;
    }

    // The data of the new custom column in admin order list
    add_action( 'manage_shop_order_posts_custom_column' , 'admin_orders_list_column_content', 10, 2 );
    function admin_orders_list_column_content( $column, $post_id ){
    global $the_order;

    if( 'custom_column' === $column ){
    $count = 0;

    // Loop through order items
    foreach( $the_order->get_items() as $item ) {
    $product = $item->get_product(); // The WC_Product Object
    $style = $count > 0 ? ' style="padding-left:6px;"' : '';

    // Display product thumbnail
    if( $product && is_object( $product ) ){
    printf( '<span%s>%s</span>', $style, $product->get_image( array( 50, 50 ) ) );

    $count++;
    }
    }
    }
    }

    qui fonctionne chez moi: montre les images des produits après chaque commande dans la liste des commandes si ces produits existent toujours sur le site. Si ce n’est pas le cas les commandes sont bien listées mais sans image (le premier code tout seul provoque une erreur critique dans ce cas).

    • Cette réponse a été modifiée le il y a 2 années et 8 mois par ferman.
    • Cette réponse a été modifiée le il y a 2 années et 8 mois par ferman.
    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2411653
    Broussaille
    Participant
    Chevalier WordPress
    356 contributions

    Bonsoir ferman,

    et bien tu te débrouille plutôt bien en « touillage » !

    Moi je n’arrivais qu’à un brouet infâme !

    Merci, ça marche impeccable. Bon, pour abuser un peu de ta bonne tambouille (WPmarmite va te faire de l’œil…), penses-tu qu’il soit possible de faire en sorte de n’afficher qu’une seule image (oui, sur WordPress, tout est possible !). Là, cela affiche toutes les images liées au produit, c’est déjà super, mais ça surcharge un peu (ahlala ! y sont jamais contents !). En fait l’idéal serait de n’afficher QUE l’image produit, donc pas celle de la galerie liée, mais celle liée à la commande (comment ça c’est pas clair ?).

    Ceci-dit comment as tu fait pour trouver ces deux snippets que tu as touillé ? Pour ma part j’ai épluché je ne sais combien de page de résultats de recherche sans tomber sur ces deux là. Une recherche en anglais ?

    Quoiqu’il en soit merci beaucoup.

    #2411657
    Broussaille
    Participant
    Chevalier WordPress
    356 contributions

    Bon, après quelques tests, je garde la formule dans son intégralité.

    L’inconvénient (plusieurs images) se changeant en avantage pour une commande de plusieurs articles (images de chaque article affichées).

    J’espère ne pas arriver trop tard pour t’éviter de chercher pour rien (quoique la réponse à cette deuxième question, si réponse il y a, puisse servir à quelqu’un d’autre).

    Encore une fois tous mes remerciements, je passe le sujet en résolu (mais je veux bien savoir pour le « mode de recherche »…).

    Bonne soirée.

    #2411658
    ferman
    Modérateur
    Maître WordPress
    7485 contributions

    Content que ça marche; Pour la recherche google, c’était: « add new custom column with post thumbnail to woocommerce order page ». Je n’ai pas cherché à optimiser donc il y a forcément d’autres possibilités.

    Et non, pas de problème, je n’avais pas commencé à réfléchir à la suite ( sans doute pas simple).

    • Cette réponse a été modifiée le il y a 2 années et 8 mois par ferman.
    #2411705
    Broussaille
    Participant
    Chevalier WordPress
    356 contributions

    Bonjour ferman,

    pour le problème des images, j’ai une « solution », j’enlève les images de la galerie des produits vendus (n’ayant besoin que du visuel « principal »).

    Donc c’est bon.

    Quand tu dis que tu n’as pas cherché à optimiser, tu parles de la recherche, ou du code ?

    Encore merci et bon dimanche.

    #2411714
    ferman
    Modérateur
    Maître WordPress
    7485 contributions

    Quand tu dis que tu n’as pas cherché à optimiser, tu parles de la recherche, ou du code ?

    Des deux mais pour le code il était déjà bon. Il suffisait juste de le modifier un peu. Pour la requête j’ai mis les mots-clés qui me semblaient appropriés mais je ne me suis pas cassé la tête à fignoler la requête.

    #2411718
    Broussaille
    Participant
    Chevalier WordPress
    356 contributions

    C’était bien la peine que je me casse la tête à multiplier les expressions pour la recherche ! Mais n’étant pas très à l’aise en anglais, l’idée ne met pas venue de faire une recherche dans cette langue. J’y songerais pour la prochaine.

    Allez, je cesse de t’interpeller, après tout c’est le weekend, même pour les bénévoles !

8 sujets de 1 à 8 (sur un total de 8)
  • Vous devez être connecté pour répondre à ce sujet.