Accueil Forums Support communautaire WooCommerce sauvegarder résultats cases à cocher dans metabox sur l’admin produit

Ce sujet a 16 réponses, 2 participants et a été mis à jour par  folly29, il y a 3 semaines et 2 jours.

17 sujets de 1 à 17 (sur un total de 17)
  • Auteur
    Messages
  • #65748

    folly29
    Participant

    Bonjour,

    J’ai ajouter une métabox dans l’admin sur les page produits pour pouvoir relier des produits a une page. Pour l’instant tout fonctionne, j’affiche toutes les sous-pages qui m’intéresse, mon problème c’est pour sauvegarder le résultat quand on update la page. Pouvez vous m’aider ? Merci d’avance. Voici mon code si dessous.

    add_action( ‘add_meta_boxes’, ‘add_custom_box’ ); function add_custom_box( $post ) { add_meta_box(“demo-meta-box”, “Artistes”, “people_meta_box”, “product”, “side”, “high”, null); } function people_meta_box($object) { wp_nonce_field( ‘my_awesome_nonce’, ‘awesome_nonce’ ); $checkboxMeta = get_post_meta( $post>ID ); ?> <?php $children = get_pages(‘child_of=’.$post>ID); if(ICL_LANGUAGE_CODE==‘fr’): $parent_id = 16; //fr elseif(ICL_LANGUAGE_CODE==‘en’): $parent_id = 75; //en endif; if( count( $children ) != 0 ) : ?> <div class=list-sub-pages> <?php $mypages = get_pages( array( ‘child_of’ => $parent_id, ‘sort_column’ => ‘post_date’, ‘sort_order’ => ‘desc’ )); foreach( $mypages as $page ) { ?> <div class=sub-pages> <?php $checkbox_value = get_post_meta($object>ID, “meta-box-checkbox”, true); ?> <input type=checkbox name=artiste-<?php echo $page>ID ?> id=artiste-<?php echo $page>ID ?> value=yes <?php if ( isset ( $checkbox_value[‘artiste-‘.$page>ID] ) ) checked( $checkbox_value[‘artiste-‘.$page>ID][0], ‘yes’ ); ?> /> <label for=artiste-<?php echo $page>ID ?>><?php echo $page>post_title; ?></label> </div> <br/> <?php } // end for each ?> </div><!– list sub pages –> <?php endif; ?> <?php }

    #65749

    Mathieu
    Modérateur

    pour la partie “$checkbox_value = get_post_meta…” vous pouvez le sortir avant la boucle foreach puisque la valeur ne change pas à chaque passage dans la boucle.
    et pour les attributs name vous pouvez mettre quelque chose comme name="meta-box-checkbox[artiste-...]" comme ça vous aurez dans $_POST le tableau tout prêt à enregistrer.

    ensuite pour l’enregistrement, vous pouvez le faire sur cette action :
    https://developer.wordpress.org/reference/hooks/save_post_post-post_type/

    donc le code donnera quelque chose dans ce genre :

    add_action("save_post_page", function ($post_ID, \WP_Post $page, $update) {
       
        if (!$update) {
           
            // valeurs par défaut pour une nouvelle page
           
            update_post_meta($page->ID, "meta-box-checkbox", []);
           
            return;
        }
       
       
        // vérification du nonce
       
        if (!isset($_POST["my_awesome_nonce"])) {
            return;
        }
       
        check_admin_referer("my_awesome_nonce", "awesome_nonce");
       
       
        // enregistrement des cases à cocher
        //...
       
       
       
    });

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    #65792

    folly29
    Participant

    Merci Mathieu pour ton aide, je vais tester ça.

    #72020

    folly29
    Participant

    Salut Mathieu,

    J’ai testé ce que tu m’a envoyé mais je n’arrive pas a le faire fonctionner, je suis débutant en php, il y a un truc que j’ai pas du bien comprendre.

    #72051

    Mathieu
    Modérateur

    Montre nous le code que tu as essayé.
    Le forum n’arrive pas à présenter le code s’il y a des balises HTML donc colle le dans ce service :
    https://framabin.org/

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    #72098

    folly29
    Participant

    Salut Mathieu, merci pour ta réactivité.

    J’ai enfin réussi a faire la sauvegarde 🙂

    Voici le code :

    https://framabin.org/p/?d53faf76d8121626#FAN8auBHCE0uduDeiPY4X6fVGcW4FRlYDTyVQ4qYPGk=

    Par contre maintenant que j’ai sauvegardé les infos, j’aimerais pouvoir afficher les produits qui sont lié a la page directement sur la page concernait.

    Exemple : J’ai un produit “Nirvana : Nevermind” et une page artiste “nirvana”, grâce au développement ci dessus j’aimerais afficher le produit “Nirvana : Nevermind” sur la page “Nirvana”. J’espère que je suis assez clair. En tout cas, merci beaucoup pour ton aide.

    • Cette réponse a été modifiée le il y a 2 mois et 2 semaines par  folly29.
    #72150

    Mathieu
    Modérateur

    est ce que sur la page produit, tu as besoin d’afficher la liste des pages artistes ?

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    #72188

    folly29
    Participant

    Non seulement un lien vers la page de l’artiste qui a été coché dans l’admin.

    #72234

    Mathieu
    Modérateur

    donc la réponse à ma question est “oui” 😉 tu as besoin d’afficher la liaison entre le produit en cours et les pages artistes cochées.
    je demandais cela par rapport au choix de l’édition de cette liaison.

    donc maintenant sur la page de l’artiste, l’idée pour afficher les produits liés est de parcourir tous les produits et de tester pour chacun s’il est lié à la page en cours.

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    #72385

    folly29
    Participant

    Merci Mathieu pour ta réponse,

    J’arrive bien a afficher touts les produits sur la page artistes avec le code suivant : https://framabin.org/p/?d0b57f76556f4420#qR0wR2vbVxSdbQMcKB+xXUjThHnn7yh1cfIyL05t3r8=

    Par contre je ne vois pas comment faire la liaison.

    Merci d’avance.

    #72729

    Mathieu
    Modérateur

    le test dans la boucle while peut se faire comme cela :
    https://framabin.org/p/?c678c1752e41961f#N9ASdlCzaIydL/dqwVf17OPNyZ53erPDDQ0Ltbie1WQ=

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    #73169

    folly29
    Participant

    Merci pour ton aide précieuse, je vais tester cela.

    #75841

    folly29
    Participant

    Salut Mathieu,

    J’ai encore un soucis avec l’affichages des produits. Je n’arrive pas a les afficher sur la version anglaise. Sur la version Francaise ca fonctionne parfaitement. Le seul probleme c’est que si aucun produit n’est relier j’aimerais afficher un texte précisant que aucun produit n’est présent dans cette catégorie.

    Je suis vraiment perdu et je ne vois pas du tout comment faire. Si tu pouvais m’aider ca serait vraiment sympa.

    Voici mon code : https://framabin.org/p/?59c88436e88bcd85#sdDvxPrxDhMvpzT5uURq25uIjAmIPWOigN1Kc+0r6n8=

    #76010

    Mathieu
    Modérateur

    si je me rappelle bien, le code qui a été ajouté permet de lier plusieurs pages WordPress à un produit WooCommerce.
    quel est la relation de cela avec la catégorie dont tu parles ? il s’agit d’une catégorie de produits WooCommerce ?

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    #76062

    folly29
    Participant

    Salut Mathieu,

    Oui c’est une catégorie de produit. En gros j’affiche sur une page tout les articles lier a un artiste.

    Exemple :

    Page artiste “Nirvana”

    Plusieurs produit lier a la page nirvana (Bleach, Nervermind …) version CD (Catégorie) et version Vinyl (Catégorie)

    Est-ce plus clair pour toi ?

    #76115

    Mathieu
    Modérateur

    dans ce cas tu as déjà la condition dans le code.
    tu as if ( $wpb_all_query->have_posts() ) et donc s’il n’y a pas de produit dans la catégorie, tu peux mettre un message dans le else.

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    #76154

    folly29
    Participant

    Le problème c’est que cette condition récupère tout les produits de la catégorie, donc il y aura toujours des produits dedans. Il me faudrait aussi la relation qui précise que cette article est lier a la page de l’artiste.

17 sujets de 1 à 17 (sur un total de 17)

Vous devez être connecté pour répondre à ce sujet.