Otevře se na nové kartě

Novinka: Vizuální editor pro éru AI webů: www.directedit.dev

Jak skrývat obsah v builderech na základě SimpleShop členských sekcí

SimpleShop sám o sobě má integraci pouze do Gutenbergu. Avšak pro DIVI (a další buildery) existuje relativně jednoduchá cesta, jak do nich SimpleShop “integrovat”.

Jitka Klingenbergová
Jitka Klingenbergová
Vytvořeno: 11. 3. 2023 | Aktualizováno: 6. 8. 2025

To, že SimpleShop umí skrývat obsah pro členské sekce přímo ve WordPress, to ví každý (kdo s ním pracuje). A to, že v DIVI (a dalších builderech) není tahle možnosti k dispozici… ví bohužel taky každý.

SimpleShop sám o sobě má tuto integraci pouze do Gutenbergu (tj. že můžete nastavit, který blok bude viditelný pro konkrétní členskou sekci). I tak existuje v případě DIVI (a dalších builderů) relativně jednoduchá cesta, jak tento problém vyřešit – na základě existence cookies (tj. resp. zobrazování obsahu podle cookies).

Princip fungování a omezení:

  • funguje to pro libovolný stavební blok DIVI (sekce, řádek, sloupec, modul),
  • do webu musí být vložen kód, který je na konci této stránky – do child theme nebo do pluginu na snippety,
  • řešení funguje na bázi technických cookies
    • zkontroluje, zda je uživatel přihlášen do webu a pokud ano, nastaví SS skupiny do cookies
    • pokud přihlášen není, SS cookies odebere,
  • pokud má uživatel skupin víc, každá skupina má svoje separátní cookie,
  • v tomto řešení není k dispozici funkce postupného odkrývání obsahu (tj. říci, za jak dlouho od zakoupení členské sekce se má obsah zobrazit).
  • testováno s DIVI 4.20.x (kód by měl být přepoužitelný i pro další buildery, pokud umí zobrazit stavební bloky podle hodnoty v cookies).
  • testováno na PHP 7.4+
SimpleShop - cookies
Ukázka cookies po vložení při použití tohoto řešení

Postup

1. vložte do webu PHP kód

(najdete ho na konci stránky)

2. najděte SSC ID SimpleShop Skupiny

WP menu -> SimpleShop -> Skupiny -> údaj ze sloupce SSC ID

ID SimpleShop skupiny

3. Z těchto ID si vytvořte názvy cookies pro DIVI podmínky

Cookie má vždy tvar ss_group_x, kde x je SSC ID skupiny z bodu 2.

  • v tomto testovacím případě je to ss_group_453 a ss_group_454.

4. Název cookie pak dejte do podmínky v DIVI stavebním bloku (Pokročilé -> Podmínky):

Nastavení SimpleShop do DIVI

PHP Kód

Tento kód vložte do child theme nebo do pluginu na snippety.

Kód v. 2 (děkuji za úpravu od Adama Kotaly)

<?php

function process_ss_groups_to_cookies()
{
    unset_ss_cookies();

    if (is_user_logged_in()) {
        global $wpdb;
        $user_id = intval(get_current_user_id()); //sanitizing input

        $query = $wpdb->prepare('SELECT * FROM `' . $wpdb->prefix . 'usermeta` WHERE user_id=%d AND meta_key = "_ssc_user_groups"', $user_id);
        $result = $wpdb->get_results($query);

        if ($result !== false && sizeof($result) > 0) {
            $ss_groups = @unserialize($result[0]->meta_value);

            if ($ss_groups !== false) {
                foreach ($ss_groups as $ss_group) {
                    set_ss_group_cookie("ss_group_" . $ss_group);
                }
            }
        }
    }
}

function set_ss_group_cookie($cookie_name)
{
    if (!isset($_COOKIE[$cookie_name])) {
        setcookie($cookie_name, $cookie_name, time() + 31556926, "/");
        $_COOKIE[$cookie_name] = $cookie_name; // Updating the _COOKIE superglobal immediately
    }
}

function unset_ss_cookies()
{
    foreach ($_COOKIE as $c_name => $c_value) {
        if (strpos($c_name, "ss_group_") === 0) {
            setcookie($c_name, '', time() - 3600, '/'); // Destroy the cookie
            unset($_COOKIE[$c_name]); // Unset the superglobal variable
        }
    }
}

//call it when render any page to (un)set cookies properly
add_action('wp', 'process_ss_groups_to_cookies');

Pozn. autora: Další možnost je využití DIVI podmínek a uživatelských rolí. Podle SS členské sekce, kterou má uživatel k dispozici, by se mu přiřadila role a v DIVI by se pak nastavovaly podmínky podle role.

Pošlete to dál:

Jitka Klingenbergová

Jitka Klingenbergová

Absolventka ČVUT FIT oboru Informatika | Programátorka | Webová vývojářka, konzultantka a mentorka
tvorime@vyladeny-web.cz

Vaše komentáře

Zanechte první komentář

Pravidelná dávka užitečných tipů až do schránky

Hledat