Home / eCommerce / Dynamic Product Schema Markup for All WooCommerce Products
Duplicate Snippet

Embed Snippet on Your Site

Dynamic Product Schema Markup for All WooCommerce Products

Smart setup Schema Markup

Code Preview
php
<?php
<?php
/**
 * ROOSMARK - Complete Product Schema + Category-Specific FAQs
 * Dynamisk Schema Markup för ALLA produktsidor med 30 kategori-anpassade FAQ:er
 * 
 * Installation: WPCode → Add Snippet → PHP Snippet → Klistra in denna kod
 * Aktivering: Spara och aktivera snippeten
 */
if (!function_exists('roosmark_product_schema_with_category_faq')) {
    function roosmark_product_schema_with_category_faq() {
        // Only run on single product pages
        if (!is_product()) {
            return;
        }
        
        global $product;
        
        // ==========================================
        // 1. HÄMTA PRODUKTDATA
        // ==========================================
        $product_id = $product->get_id();
        $product_name = $product->get_name();
        $product_url = get_permalink($product_id);
        $product_description = $product->get_short_description();
        
        // Fallback to regular description if short description is empty
        if (empty($product_description)) {
            $product_description = wp_strip_all_tags($product->get_description());
            $product_description = substr($product_description, 0, 200) . '...';
        }
        
        // Get product image
        $image_id = $product->get_image_id();
        $product_image = wp_get_attachment_url($image_id);
        
        // Get SKU or use product ID as fallback
        $product_sku = $product->get_sku();
        if (empty($product_sku)) {
            $product_sku = 'roosmark-' . $product_id;
        }
        
        // Get pricing
        if ($product->is_type('variable')) {
            $variations = $product->get_available_variations();
            $prices = array_column($variations, 'display_price');
            $price_min = min($prices);
            $price_max = max($prices);
            $offer_count = count($variations);
        } else {
            $price_min = $product->get_price();
            $price_max = $product->get_price();
            $offer_count = 3; // Standard: 3 storlekar
        }
        
        // Get availability
        $availability = $product->is_in_stock() ? 'https://schema.org/PreOrder' : 'https://schema.org/OutOfStock';
        
        // ==========================================
        // 2. PRODUCT SCHEMA
        // ==========================================
        $product_schema = array(
            '@context' => 'https://schema.org/',
            '@type' => 'Product',
            'name' => $product_name,
            'url' => $product_url,
            'image' => $product_image,
            'description' => $product_description . ' Fotograferat av Caroline Roosmark. Tryckt på högkvalitativt konstpapper. Leveranstid 2-4 arbetsdagar.',
            'brand' => array(
                '@type' => 'Brand',
                'name' => 'Roosmark',
                '@id' => home_url() . '/#brand'
            ),
            'manufacturer' => array(
                '@id' => home_url() . '/#organization'
            ),
            'sku' => $product_sku,
            'category' => 'Konst & Posters',
            'offers' => array(
                '@type' => 'AggregateOffer',
                'availability' => $availability,
                'priceCurrency' => 'SEK',
                'lowPrice' => $price_min,
                'highPrice' => $price_max,
                'url' => $product_url,
                'priceValidUntil' => date('Y-m-d', strtotime('+1 year')),
                'offerCount' => $offer_count,
                'itemCondition' => 'https://schema.org/NewCondition',
                'hasMerchantReturnPolicy' => array(
                    '@type' => 'MerchantReturnPolicy',
                    'applicableCountry' => 'SE',
                    'returnPolicyCategory' => 'https://schema.org/MerchantReturnNotPermitted',
                    'merchantReturnDays' => 0,
                    'returnMethod' => 'https://schema.org/ReturnByMail',
                    'additionalProperty' => array(
                        array(
                            '@type' => 'PropertyValue',
                            'name' => 'Returpolicy',
                            'value' => 'Ångerrätt gäller ej för posters då dessa endast görs manuellt på beställning enligt 18§ distansavtalslagen.'
                        )
                    )
                ),
                'shippingDetails' => array(
                    '@type' => 'OfferShippingDetails',
                    'shippingRate' => array(
                        '@type' => 'MonetaryAmount',
                        'value' => '49',
                        'currency' => 'SEK'
                    ),
                    'shippingDestination' => array(
                        '@type' => 'DefinedRegion',
                        'addressCountry' => 'SE'
                    ),
                    'deliveryTime' => array(
                        '@type' => 'ShippingDeliveryTime',
                        'handlingTime' => array(
                            '@type' => 'QuantitativeValue',
                            'minValue' => 2,
                            'maxValue' => 4,
                            'unitCode' => 'DAY'
                        )
                    )
                )
            )
        );
        
        // Output Product Schema
        echo '<script type="application/ld+json">' . json_encode($product_schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '</script>' . "\n";
        
        // ==========================================
        // 3. HÄMTA PRODUKTENS KATEGORIER
        // ==========================================
        $product_categories = wp_get_post_terms($product_id, 'product_cat', array('fields' => 'slugs'));
        
        // ==========================================
        // 4. FAQ SCHEMA - GRUNDLÄGGANDE FAQ:ER (ALLA PRODUKTER)
        // ==========================================
        $faq_schema = array(
            '@context' => 'https://schema.org',
            '@type' => 'FAQPage',
            'mainEntity' => array(
                // FAQ 1: Ångerrätt
                array(
                    '@type' => 'Question',
                    'name' => 'Gäller ångerrätt för posters från Roosmark?',
                    'acceptedAnswer' => array(
                        '@type' => 'Answer',
                        'text' => 'Nej, ångerrätt gäller inte för posters och original fotografier då dessa tillverkas manuellt på beställning enligt 18§ distansavtalslagen. Varje poster är specialtillverkad när du beställer.'
                    )
                ),
                // FAQ 2: Leveranstid
                array(
                    '@type' => 'Question',
                    'name' => 'Hur lång är leveranstiden för ' . $product_name . '?',
                    'acceptedAnswer' => array(
                        '@type' => 'Answer',
                        'text' => 'Leveranstiden är 2-4 arbetsdagar efter att beställningen lagts. Postern tillverkas på beställning för att garantera högsta kvalitet.'
                    )
                ),
                // FAQ 3: Fraktkostnad
                array(
                    '@type' => 'Question',
                    'name' => 'Vad kostar frakten?',
                    'acceptedAnswer' => array(
                        '@type' => 'Answer',
                        'text' => 'Frakten kostar 49 kr till Sverige. Vi använder pålitliga fraktpartners för att säkerställa att din poster kommer fram säkert.'
                    )
                ),
                // FAQ 4: Storlekar
                array(
                    '@type' => 'Question',
                    'name' => 'Vilka storlekar finns ' . $product_name . ' i?',
                    'acceptedAnswer' => array(
                        '@type' => 'Answer',
                        'text' => 'Postern finns i flera standardstorlekar: 30x40 cm, 50x70 cm och 70x100 cm. Välj den storlek som passar bäst för ditt utrymme.'
                    )
                ),
                // FAQ 5: Material
                array(
                    '@type' => 'Question',
                    'name' => 'På vilket material är postern tryckt?',
                    'acceptedAnswer' => array(
                        '@type' => 'Answer',
                        'text' => 'Postern är tryckt på högkvalitativt konstpapper (200-250g) med matt eller halvmatt yta. Detta ger djup, rika färger och en lyxig känsla.'
                    )
                )
            )
        );
        
        // ==========================================
        // 5. LÄGG TILL KATEGORI-SPECIFIKA FAQ:ER
        // ==========================================
        
        // ALLA POSTERS ROOSMARK
        if (in_array('alla-posters-roosmark', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Vad är speciellt med Caroline Roosmarks posters?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Caroline Roosmarks posters är kända för sin unika kombination av konstnärlig fotografering och elegant design. Varje motiv är noggrant komponerat för att passa moderna hem och gallerier.'
                )
            );
        }
        
        // CAROLINE ROOSMARK ORIGINAL FOTOGRAFIER
        if (in_array('caroline-roosmark-original-fotografier', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Vad är skillnaden mellan originalfotografier och posters?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Originalfotografierna är högkvalitativa fine art-prints med begränsad upplaga, ofta signerade. De trycks på premium-papper med arkivbeständigt bläck för maximal kvalitet och hållbarhet.'
                )
            );
        }
        
        // DINOSAURIE POSTERS
        if (in_array('dinosaurie-posters', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Är dinosaurieposterna pedagogiska för barn?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja, våra dinosaurieposters kombinerar konstnärlig design med paleontologisk noggrannhet, vilket gör dem perfekta för barnrum och lekrum med pedagogiskt syfte.'
                )
            );
        }
        
        // HÄSTAR POSTERS
        if (in_array('hastar-posters', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Passar hästposterna för ryttare och stall?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja, många ryttare och stall väljer våra hästposters för att dekorera klubblokaler, stall och hem. Motiven fångar hästarnas elegans och kraft på ett unikt sätt.'
                )
            );
        }
        
        // VILDA DJUR POSTERS
        if (in_array('posters-vilda-djur', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Är djurfotografierna tagna i vilt tillstånd?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Många motiv är fotograferade i djurens naturliga habitat under ansvarsfullt djurfotografering som respekterar djurens välbefinnande och miljö.'
                )
            );
        }
        
        // SVARTVITA MOTIV
        if (in_array('posters-svartvita-motiv', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Varför välja svartvita posters?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Svartvita posters ger en tidlös elegans och passar i alla inredningsstilar. De är perfekta för att skapa sammanhängande galleriväggar och drar fokus till form och komposition.'
                )
            );
        }
        
        // SVARTVITA PORTRÄTT
        if (in_array('posters-svartvita-portratt', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Vad kännetecknar svartvita porträtt?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Svartvita porträtt fokuserar på ljus, skugga och ansiktsuttryck utan färgdistraktioner. Detta skapar djup och dramatik som fångar betraktarens blick.'
                )
            );
        }
        
        // SVARTVITA URBANA MOTIV
        if (in_array('posters-svartvita-urbana-motiv', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Passar urbana motiv i moderna hem?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja, svartvita urbana motiv är perfekta för modern och industriell inredning. De adderar stadslivets dynamik och arkitektonisk skönhet till hemmet.'
                )
            );
        }
        
        // SVARTVITA POSTERS GALLERI
        if (in_array('svartvita-posters-galleri', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Hur skapar man en sammanhängande gallervägg?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Välj motiv med liknande toner (varma eller kalla gråskalor) och håll dig till 2-3 olika storlekar. Planera layouten innan upphängning för bästa resultat.'
                )
            );
        }
        
        // WALL ART B&W
        if (in_array('wall-art-b-w', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Vad är skillnaden mellan wall art och vanliga posters?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Wall art-kollektionen innehåller exklusiva motiv med högre kvalitet och ofta unika konstnärliga kompositioner som är designade för att vara konstens huvudfokus på väggen.'
                )
            );
        }
        
        // KVINNOR FOTO KONST GRAFIK
        if (in_array('posters-kvinnor-foto-konst-grafik', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Vilken stil har kvinnomotiven?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Kollektionen spänner från klassisk fotografisk konst och mode till modern grafisk design och konstnärliga tolkningar av kvinnlig skönhet och styrka.'
                )
            );
        }
        
        // SAGOLIKA KVINNOR
        if (in_array('posters-sagolika-kvinnor-farg-svartvit', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Vad betyder "sagolika kvinnor"?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Kollektionen fångar kvinnor i poetiska, drömska och konstnärliga scenerier - från eleganta porträtt till fantasifulla kompositioner som berättar en historia.'
                )
            );
        }
        
        // SPORT OCH IDROTTSKVINNOR
        if (in_array('posters-sport-och-idrottskvinnor', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Passar idrottsposterna på gymmet eller i hemmagymet?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Absolut! Våra idrottsmotiv är perfekta som motivation i träningsmiljöer och adderar både energi och konstnärlig kvalitet.'
                )
            );
        }
        
        // STÄDER OCH LÄNDER
        if (in_array('posters-affischer-stader-lander', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Är posterna bra som reseminnen?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja! Många väljer våra stads- och landposters för att minnas favoritresor eller drömma om framtida äventyr.'
                )
            );
        }
        
        // VÄRLDEN
        if (in_array('posters-varlden', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Passar världsmotiven för resekänsla i hemmet?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Absolut! Världsmotiven är perfekta för att skapa en reseinspirerad inredning och väcka minnen från eller drömmar om fjärran destinationer.'
                )
            );
        }
        
        // LANDSKAP OCH NATUR
        if (in_array('landskap-natur-posters', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Skapar naturposters lugn i hemmet?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja, naturmotiv är vetenskapligt bevisade att reducera stress och skapa en lugnande atmosfär, perfekt för sovrum och meditationsutrymmen.'
                )
            );
        }
        
        // KULTUR OCH KONST
        if (in_array('kultur-och-konst-posters', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Passar konstposterna i hemmakontor?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja, kulturella och konstnärliga motiv skapar en inspirerande och intellektuellt stimulerande miljö i arbetsrum och bibliotek.'
                )
            );
        }
        
        // GRAFIK KONST
        if (in_array('posters-grafik-konst', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Passar grafiska posters i skandinaviska hem?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Absolut! Grafisk konst med sin rena estetik är som skapad för nordisk design och minimalistiska interiörer.'
                )
            );
        }
        
        // MÅLERI POSTERS
        if (in_array('maleri-posters', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Är måleriposterna reproduktioner av riktig konst?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja, många motiv är högkvalitativa reproduktioner av klassiska och samtida målningar, tryckta med tekniker som bevarar originalets färger och textur.'
                )
            );
        }
        
        // VÄXTER OCH BLOMMOR
        if (in_array('vaxter-blommor-botaniska-posters', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Passar växtposters i köket?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Absolut! Botaniska motiv är perfekta för kök och matrum där de skapar en fräsch, naturinspirerad atmosfär.'
                )
            );
        }
        
        // HEM OCH INREDNING
        if (in_array('hem-och-inredning-posters', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Hur väljer jag rätt poster för mitt hem?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Överväg rummets färgschema, befintlig inredningsstil och atmosfär du vill skapa. Matcha motiv med rummets funktion - lugna motiv i sovrum, energiska i vardagsrum.'
                )
            );
        }
        
        // TAVELVÄGGAR KOMPLETTA SAMLINGAR
        if (in_array('tavelvaggar-kompletta-samlingar', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Hur hänger jag upp en tavelvägg?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Börja med att planera layouten på golvet. Häng centralmotivet först i ögonhöjd (ca 145-150 cm till bildens mitt), bygg sedan ut runt detta. Håll 5-8 cm mellanrum mellan ramarna.'
                )
            );
        }
        
        // RAMAR
        if (in_array('ramar', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Hur väljer jag rätt ramstorlek?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ramens storlek ska matcha posterns mått. Om du vill ha passepartout, välj en ram en storlek större (ex. 50x70 ram för 40x50 poster med passepartout).'
                )
            );
        }
        
        // BRICKOR
        if (in_array('brickor', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Kan brickorna användas som dekoration?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Absolut! Många kunder använder våra designbrickor både funktionellt och som dekorativa element på bord, skåp eller väggar.'
                )
            );
        }
        
        // KUDDAR
        if (in_array('kuddar', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Är kuddöverdragen tvättbara?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja, de flesta kuddöverdrag kan maskintvättas i 40 grader. Detaljerade tvättråd finns på produktetiketten.'
                )
            );
        }
        
        // BÖCKER
        if (in_array('bocker', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Passar böckerna som presenter?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Absolut! Våra konstböcker är lyxigt producerade med högkvalitativa bilder och är perfekta gåvor för konstintresserade.'
                )
            );
        }
        
        // KÖP TIDIGARE KALENDRAR
        if (in_array('kop-tidigare-kalendrar', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Varför köpa en gammal kalender?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Många köper tidigare års kalendrar för de vackra motiven som kan klippas ut och ramas in separat efter årets slut, eller som arkivmaterial.'
                )
            );
        }
        
        // ÅRETS KALENDER / RETS KALENDER
        if (in_array('aret-skalender', $product_categories) || in_array('rets-kalender-2022', $product_categories) || in_array('20192020-kalendrar', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Kan jag fortfarande köpa äldre kalendrar?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Ja, äldre kalendrar säljs så länge lagret räcker. Många samlar på kalendrar för motiven eller använder dem som konstböcker.'
                )
            );
        }
        
        // SAGOLIKA KVINNOR KALENDER
        if (in_array('sagolika-kvinnor-kalender-2023', $product_categories)) {
            $faq_schema['mainEntity'][] = array(
                '@type' => 'Question',
                'name' => 'Vad innehåller Sagolika kvinnor-kalendern?',
                'acceptedAnswer' => array(
                    '@type' => 'Answer',
                    'text' => 'Kalendern innehåller 12 unika motiv från kollektionen Sagolika Kvinnor - ett nytt konstnärligt kvinnoporträtt för varje månad.'
                )
            );
        }
        
        // ==========================================
        // 6. ALLTID SISTA FAQ: VEM ÄR FOTOGRAFEN?
        // ==========================================
        $faq_schema['mainEntity'][] = array(
            '@type' => 'Question',
            'name' => 'Vem är fotografen bakom bilderna?',
            'acceptedAnswer' => array(
                '@type' => 'Answer',
                'text' => 'Caroline Roosmark är en svensk fotokonstnär med över 20 års erfarenhet. Hon är känd för sina svartvita porträtt och konstnärliga tolkningar av människor och platser.'
            )
        );
        
        // Output FAQ Schema
        echo '<script type="application/ld+json">' . json_encode($faq_schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '</script>' . "\n";
    }
    
    // Hook into wp_head
    add_action('wp_head', 'roosmark_product_schema_with_category_faq');
}
?>

Comments

Add a Comment