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

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

12 sujets de 1 à 12 (sur un total de 12)
  • 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 3 semaines et 4 jours 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.

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

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