Novinka: Vizuální editor pro éru AI webů. Poslední dílek skládačky, když chcete upravovat web a ne psát e-maily. 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”.

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_453ss_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.

Líbil se vám článek? Pošlete ho 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ář

Zpět k tipům

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