Création d’un shortcode qui plante (Créer un compte)

  • WordPress :5.7
  • Statut : non résolu
Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #2381447
    Yelia44
    Participant
    Initié WordPress
    1 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL :
    • Thème utilisé : Divi
    • Extensions en place : WooCommerce, B2Bking, Colissimo, Product filter by WooBeWoo
    • Nom de l’hébergeur : local
    • Adresse du site : local

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

    Je souhaite afficher en hover sur mes produits (dans les pages catégories) un attribut personnalisé mais je rencontre des difficultés. A mon sens, le plus simple est de créer un shortcode mais je ne m’en sors pas…
    Voilà où j’en suis.
    Celui-ci, à utiliser [product_description id = ’22’] fonctionne très bien mais j’ai besoin que l’id soit récupéré automatiquement.

    function display_product_description( $atts ){
        $atts = shortcode_atts( array(
            'id' =>  get_the_id(),
        ), $atts, 'product_description' );
    
        global $product;
    
        if ( ! is_a( $product, 'WC_Product') )
            $product = wc_get_product($atts['id']);
    	
    	return $product->get_attribute( 'Profil aromatique' );
    }
    add_shortcode( 'product_description', 'display_product_description' );

    Ce code, fonctionne également très bien mais cela s’affiche en dessous de mon produit et je n’arrive pas à le faire afficher en hover.

    function woocommerce_after_shop_loop_item_title_short_description2() {
    	global $product;
    
    	if ( ! $product->get_attribute( 'Profil aromatique' ) ) return;
    	?>
    	<div itemprop="description" id="hovertest" class="test" >
    		<?php echo apply_filters( 'woocommerce_short_description', $product->get_attribute( 'Profil aromatique' ) ) ?>
    	</div>
    	<?php
    }
    add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_after_shop_loop_item_title_short_description2', 5);

    Du coup, j’ai voulu faire un mix…

    function display_profil_description(){
    global $product;
    	if ( ! $product->get_attribute( 'Profil aromatique' ) ){ return '';}
    	else{
    	return apply_filters( 'woocommerce_short_description', $product->get_attribute( 'Profil aromatique' ) );
    	}
    }
    add_shortcode( 'display_profil_description', 'display_profil_description' );

    Je voudrais l’utiliser [display_profil_description] et que l’ID soit trouvé à la volée, en fonction du produit sur lequel je l’affiche. Je fais l’affichage comme ça :

    .woocommerce .et_overlay:before {
        left: 0;
        margin-left: 0;
      margin-top:-50px !important;
        content: '[display_profil_description]';
        /*** YOUR TEXT ***/
        font-family: 'Source Sans Pro', Arial !important;
        /*** YOUR CHOSEN FONT FAMILY ***/
        font-size: 20px;
        color: #fff;
        /*** COLOR OF YOUR TEXT ***/
        text-align: center;
        width: 100%;
        padding: 5px 0;
    }

    Mais ça ne fonctionne pas avec ce shortcode (ça fonctionne avec celui de l’id)…Ma page s’affiche super mal (que le menu ! pas le contenu, comme si ça plantait avant que tout charge), aucun message d’erreur en console et réponse 200, pas d’erreur…

    Pourriez-vous m’éclairer ?
    Après 5h à chercher, je sèche…

     

    Merci mille fois

    Eva

    • Ce sujet a été modifié le il y a 2 jours et 17 heures par Yelia44.
Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.