Plugin Directory

Changeset 3649305


Ignore:
Timestamp:
08/16/2026 05:57:49 AM (2 months ago)
Author:
VraagAlexNL
Message:

Update to version 4.0.0.17 from GitHub

Location:
avd-cta-insights
Files:
2 deleted
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • avd-cta-insights/tags/4.0.0.17/includes/admin/services/class-template-manager.php

    r3627645 r3649305  
    77final class AVDCTAI_Template_Manager {
    88
    9     /*
    10      * Bestaande optionnaam bewust behouden.
    11      * Zo blijven eerder opgeslagen CTA-templates beschikbaar.
    12      */
    13     const OPTION_TEMPLATES = 'avd_uber_cta_templates';
     9    private const OPTION_TEMPLATES = 'avdctai_templates';
     10    private const LEGACY_OPTION_TEMPLATES = 'avd_uber_cta_templates';
    1411
    1512    public static function get_templates(): array {
    16         $saved = get_option(
    17             self::OPTION_TEMPLATES,
    18             array()
    19         );
     13        $saved = get_option(self::OPTION_TEMPLATES, null);
    2014
    2115        if (!is_array($saved)) {
    22             $saved = array();
     16            $legacy = get_option(self::LEGACY_OPTION_TEMPLATES, array());
     17
     18            if (is_array($legacy) && !empty($legacy)) {
     19                $saved = $legacy;
     20                update_option(self::OPTION_TEMPLATES, $saved, false);
     21            } else {
     22                $saved = array();
     23            }
    2324        }
    2425
    25         return wp_parse_args(
    26             $saved,
    27             self::defaults()
    28         );
     26        return self::merge_templates($saved);
    2927    }
    3028
    … …  
    3331        $templates = self::get_templates();
    3432
    35         if (
    36             $intent === '' ||
    37             !isset($templates[$intent]) ||
    38             !is_array($templates[$intent])
    39         ) {
     33        if ($intent === '' || !isset($templates[$intent]) || !is_array($templates[$intent])) {
    4034            return self::default_template();
    4135        }
    4236
    43         return wp_parse_args(
    44             $templates[$intent],
    45             self::default_template()
    46         );
     37        return wp_parse_args($templates[$intent], self::default_template());
    4738    }
    4839
    … …  
    5748            $clean[$intent] = array(
    5849                'title' => isset($intent_input['title'])
    59                     ? sanitize_text_field(
    60                         wp_unslash($intent_input['title'])
    61                     )
     50                    ? sanitize_text_field(wp_unslash((string) $intent_input['title']))
    6251                    : $default['title'],
    63 
    6452                'text' => isset($intent_input['text'])
    65                     ? sanitize_textarea_field(
    66                         wp_unslash($intent_input['text'])
    67                     )
     53                    ? sanitize_textarea_field(wp_unslash((string) $intent_input['text']))
    6854                    : $default['text'],
    69 
    7055                'button' => isset($intent_input['button'])
    71                     ? sanitize_text_field(
    72                         wp_unslash($intent_input['button'])
    73                     )
     56                    ? sanitize_text_field(wp_unslash((string) $intent_input['button']))
    7457                    : $default['button'],
    75 
    7658                'url' => isset($intent_input['url'])
    77                     ? esc_url_raw(
    78                         wp_unslash($intent_input['url'])
    79                     )
     59                    ? esc_url_raw(wp_unslash((string) $intent_input['url']))
    8060                    : $default['url'],
    81 
    82                 'enabled' => !empty($intent_input['enabled'])
    83                     ? 1
    84                     : 0,
     61                'enabled' => !empty($intent_input['enabled']) ? 1 : 0,
    8562            );
    8663        }
    8764
    88         update_option(
    89             self::OPTION_TEMPLATES,
    90             $clean,
    91             false
    92         );
     65        update_option(self::OPTION_TEMPLATES, $clean, false);
    9366    }
    9467
    9568    public static function defaults(): array {
    9669        return array(
    97             'homepage_intent' => array(
    98                 'title' => 'Wat wil je bereiken?',
    99                 'text' => 'Kies direct de route die het beste past bij je bezoek.',
    100                 'button' => 'Bekijk de beste optie',
    101                 'url' => home_url('/'),
    102                 'enabled' => 1,
     70            'homepage_intent' => self::template(
     71                'Wat wil je dat bezoekers hier doen?',
     72                'Kies één duidelijke vervolgstap die past bij het doel van deze pagina.',
     73                'Bekijk vervolgstap'
    10374            ),
    104 
    105             'phone_intent' => array(
    106                 'title' => 'Bellen lukt niet?',
    107                 'text' => 'Probeer een alternatieve route of maak het makkelijker voor bezoekers om direct contact op te nemen.',
    108                 'button' => 'Probeer direct',
    109                 'url' => home_url('/contact/'),
    110                 'enabled' => 1,
     75            'phone_intent' => self::template(
     76                'Maak contact opnemen eenvoudiger',
     77                'Bied bezoekers een duidelijke bel-, chat- of contactoptie.',
     78                'Neem contact op'
    11179            ),
    112 
    113             'contact_problem_intent' => array(
    114                 'title' => 'Kom je er niet doorheen?',
    115                 'text' => 'Help bezoekers sneller naar de juiste contactroute.',
    116                 'button' => 'Bekijk hulpopties',
    117                 'url' => home_url('/contact/'),
    118                 'enabled' => 1,
     80            'contact_problem_intent' => self::template(
     81                'Help bezoekers verder',
     82                'Bied een alternatieve route wanneer de huidige contactstap niet duidelijk genoeg is.',
     83                'Bekijk contactopties'
    11984            ),
    120 
    121             'business_service_intent' => array(
    122                 'title' => 'Meer aanvragen uit je website?',
    123                 'text' => 'Laat bezoekers laagdrempelig een scan, adviesgesprek of offerte aanvragen.',
    124                 'button' => 'Vraag advies aan',
    125                 'url' => home_url('/contact/'),
    126                 'enabled' => 1,
     85            'business_service_intent' => self::template(
     86                'Maak de volgende stap duidelijk',
     87                'Gebruik een concrete actie zoals een aanvraag, offerte, afspraak of kennismaking.',
     88                'Bekijk mogelijkheden'
    12789            ),
    128 
    129             'plugin_intent' => array(
    130                 'title' => 'Verbeter je WordPress-conversie',
    131                 'text' => 'Laat zien welke pagina’s bezoekers krijgen en welke CTA’s beter kunnen.',
    132                 'button' => 'Download of vraag hulp',
    133                 'url' => home_url('/'),
    134                 'enabled' => 1,
     90            'plugin_intent' => self::template(
     91                'Maak interesse meetbaar',
     92                'Koppel deze pagina aan een concrete vervolgstap die je kunt meten.',
     93                'Ga verder'
    13594            ),
    136 
    137             'pricing_intent' => array(
    138                 'title' => 'Twijfel je over de kosten?',
    139                 'text' => 'Maak het makkelijk om eerst vrijblijvend contact op te nemen.',
    140                 'button' => 'Laat gratis meekijken',
    141                 'url' => home_url('/contact/'),
    142                 'enabled' => 1,
     95            'pricing_intent' => self::template(
     96                'Verlaag twijfel rond de volgende stap',
     97                'Geef bezoekers een laagdrempelige manier om vragen te stellen voordat ze beslissen.',
     98                'Stel een vraag'
    14399            ),
    144 
    145             'category_or_tag_intent' => array(
    146                 'title' => 'Zoek je de juiste pagina?',
    147                 'text' => 'Help bezoekers snel naar de belangrijkste vervolgstappen.',
    148                 'button' => 'Bekijk hulpopties',
    149                 'url' => home_url('/'),
    150                 'enabled' => 1,
     100            'category_or_tag_intent' => self::template(
     101                'Wijs bezoekers de juiste route',
     102                'Gebruik deze pagina om bezoekers naar de meest relevante vervolgstap te sturen.',
     103                'Bekijk vervolgstap'
    151104            ),
    152 
    153             'content_intent' => array(
    154                 'title' => 'Hulp nodig met dit onderwerp?',
    155                 'text' => 'Voeg een logische vervolgstap toe die past bij de inhoud van de pagina.',
    156                 'button' => 'Bekijk mogelijkheden',
    157                 'url' => home_url('/contact/'),
    158                 'enabled' => 1,
     105            'content_intent' => self::template(
     106                'Voeg een logische vervolgstap toe',
     107                'Laat de CTA aansluiten op het onderwerp en de intentie van de pagina.',
     108                'Bekijk mogelijkheden'
    159109            ),
    160110        );
    … …  
    174124        return array(
    175125            'homepage_intent' => 'Homepage / algemene instap',
    176             'phone_intent' => 'Belintentie',
    177             'contact_problem_intent' => 'Contact- of bereikbaarheidsprobleem',
    178             'business_service_intent' => 'Zakelijke dienstinteresse',
    179             'plugin_intent' => 'Plugin- of WordPress-interesse',
     126            'phone_intent' => 'Contactintentie',
     127            'contact_problem_intent' => 'Contactprobleem',
     128            'business_service_intent' => 'Dienst- of aanvraagintentie',
     129            'plugin_intent' => 'Product- of toolinteresse',
    180130            'pricing_intent' => 'Prijsinteresse',
    181131            'category_or_tag_intent' => 'Routepagina',
    … …  
    183133        );
    184134    }
     135
     136    private static function template(string $title, string $text, string $button): array {
     137        return array(
     138            'title' => $title,
     139            'text' => $text,
     140            'button' => $button,
     141            'url' => '',
     142            'enabled' => 0,
     143        );
     144    }
     145
     146    private static function merge_templates(array $saved): array {
     147        $templates = array();
     148
     149        foreach (self::defaults() as $intent => $default) {
     150            $value = isset($saved[$intent]) && is_array($saved[$intent])
     151                ? $saved[$intent]
     152                : array();
     153
     154            $templates[$intent] = wp_parse_args($value, $default);
     155        }
     156
     157        return $templates;
     158    }
    185159}
  • avd-cta-insights/tags/4.0.0.17/readme.txt

    r3627645 r3649305  
    55Tested up to: 7.0
    66Requires PHP: 8.0
    7 Stable tag: 4.0.0.13
     7Stable tag: 4.0.0.15
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    5555== Changelog ==
    5656
     57= 4.0.0.15 =
     58* Made frontend tracking and dashboard integration more robust.
     59* Removed hardcoded site-specific contact details from the default plugin configuration.
     60* Added configurable CTA, phone and WhatsApp settings.
     61* Improved dashboard, settings, asset loading and WordPress.org deployment compatibility.
     62
    5763= 4.0.0.13 =
    5864* Eerste officiële release van AVD CTA Insights.
  • avd-cta-insights/trunk/includes/admin/services/class-template-manager.php

    r3627645 r3649305  
    77final class AVDCTAI_Template_Manager {
    88
    9     /*
    10      * Bestaande optionnaam bewust behouden.
    11      * Zo blijven eerder opgeslagen CTA-templates beschikbaar.
    12      */
    13     const OPTION_TEMPLATES = 'avd_uber_cta_templates';
     9    private const OPTION_TEMPLATES = 'avdctai_templates';
     10    private const LEGACY_OPTION_TEMPLATES = 'avd_uber_cta_templates';
    1411
    1512    public static function get_templates(): array {
    16         $saved = get_option(
    17             self::OPTION_TEMPLATES,
    18             array()
    19         );
     13        $saved = get_option(self::OPTION_TEMPLATES, null);
    2014
    2115        if (!is_array($saved)) {
    22             $saved = array();
     16            $legacy = get_option(self::LEGACY_OPTION_TEMPLATES, array());
     17
     18            if (is_array($legacy) && !empty($legacy)) {
     19                $saved = $legacy;
     20                update_option(self::OPTION_TEMPLATES, $saved, false);
     21            } else {
     22                $saved = array();
     23            }
    2324        }
    2425
    25         return wp_parse_args(
    26             $saved,
    27             self::defaults()
    28         );
     26        return self::merge_templates($saved);
    2927    }
    3028
    … …  
    3331        $templates = self::get_templates();
    3432
    35         if (
    36             $intent === '' ||
    37             !isset($templates[$intent]) ||
    38             !is_array($templates[$intent])
    39         ) {
     33        if ($intent === '' || !isset($templates[$intent]) || !is_array($templates[$intent])) {
    4034            return self::default_template();
    4135        }
    4236
    43         return wp_parse_args(
    44             $templates[$intent],
    45             self::default_template()
    46         );
     37        return wp_parse_args($templates[$intent], self::default_template());
    4738    }
    4839
    … …  
    5748            $clean[$intent] = array(
    5849                'title' => isset($intent_input['title'])
    59                     ? sanitize_text_field(
    60                         wp_unslash($intent_input['title'])
    61                     )
     50                    ? sanitize_text_field(wp_unslash((string) $intent_input['title']))
    6251                    : $default['title'],
    63 
    6452                'text' => isset($intent_input['text'])
    65                     ? sanitize_textarea_field(
    66                         wp_unslash($intent_input['text'])
    67                     )
     53                    ? sanitize_textarea_field(wp_unslash((string) $intent_input['text']))
    6854                    : $default['text'],
    69 
    7055                'button' => isset($intent_input['button'])
    71                     ? sanitize_text_field(
    72                         wp_unslash($intent_input['button'])
    73                     )
     56                    ? sanitize_text_field(wp_unslash((string) $intent_input['button']))
    7457                    : $default['button'],
    75 
    7658                'url' => isset($intent_input['url'])
    77                     ? esc_url_raw(
    78                         wp_unslash($intent_input['url'])
    79                     )
     59                    ? esc_url_raw(wp_unslash((string) $intent_input['url']))
    8060                    : $default['url'],
    81 
    82                 'enabled' => !empty($intent_input['enabled'])
    83                     ? 1
    84                     : 0,
     61                'enabled' => !empty($intent_input['enabled']) ? 1 : 0,
    8562            );
    8663        }
    8764
    88         update_option(
    89             self::OPTION_TEMPLATES,
    90             $clean,
    91             false
    92         );
     65        update_option(self::OPTION_TEMPLATES, $clean, false);
    9366    }
    9467
    9568    public static function defaults(): array {
    9669        return array(
    97             'homepage_intent' => array(
    98                 'title' => 'Wat wil je bereiken?',
    99                 'text' => 'Kies direct de route die het beste past bij je bezoek.',
    100                 'button' => 'Bekijk de beste optie',
    101                 'url' => home_url('/'),
    102                 'enabled' => 1,
     70            'homepage_intent' => self::template(
     71                'Wat wil je dat bezoekers hier doen?',
     72                'Kies één duidelijke vervolgstap die past bij het doel van deze pagina.',
     73                'Bekijk vervolgstap'
    10374            ),
    104 
    105             'phone_intent' => array(
    106                 'title' => 'Bellen lukt niet?',
    107                 'text' => 'Probeer een alternatieve route of maak het makkelijker voor bezoekers om direct contact op te nemen.',
    108                 'button' => 'Probeer direct',
    109                 'url' => home_url('/contact/'),
    110                 'enabled' => 1,
     75            'phone_intent' => self::template(
     76                'Maak contact opnemen eenvoudiger',
     77                'Bied bezoekers een duidelijke bel-, chat- of contactoptie.',
     78                'Neem contact op'
    11179            ),
    112 
    113             'contact_problem_intent' => array(
    114                 'title' => 'Kom je er niet doorheen?',
    115                 'text' => 'Help bezoekers sneller naar de juiste contactroute.',
    116                 'button' => 'Bekijk hulpopties',
    117                 'url' => home_url('/contact/'),
    118                 'enabled' => 1,
     80            'contact_problem_intent' => self::template(
     81                'Help bezoekers verder',
     82                'Bied een alternatieve route wanneer de huidige contactstap niet duidelijk genoeg is.',
     83                'Bekijk contactopties'
    11984            ),
    120 
    121             'business_service_intent' => array(
    122                 'title' => 'Meer aanvragen uit je website?',
    123                 'text' => 'Laat bezoekers laagdrempelig een scan, adviesgesprek of offerte aanvragen.',
    124                 'button' => 'Vraag advies aan',
    125                 'url' => home_url('/contact/'),
    126                 'enabled' => 1,
     85            'business_service_intent' => self::template(
     86                'Maak de volgende stap duidelijk',
     87                'Gebruik een concrete actie zoals een aanvraag, offerte, afspraak of kennismaking.',
     88                'Bekijk mogelijkheden'
    12789            ),
    128 
    129             'plugin_intent' => array(
    130                 'title' => 'Verbeter je WordPress-conversie',
    131                 'text' => 'Laat zien welke pagina’s bezoekers krijgen en welke CTA’s beter kunnen.',
    132                 'button' => 'Download of vraag hulp',
    133                 'url' => home_url('/'),
    134                 'enabled' => 1,
     90            'plugin_intent' => self::template(
     91                'Maak interesse meetbaar',
     92                'Koppel deze pagina aan een concrete vervolgstap die je kunt meten.',
     93                'Ga verder'
    13594            ),
    136 
    137             'pricing_intent' => array(
    138                 'title' => 'Twijfel je over de kosten?',
    139                 'text' => 'Maak het makkelijk om eerst vrijblijvend contact op te nemen.',
    140                 'button' => 'Laat gratis meekijken',
    141                 'url' => home_url('/contact/'),
    142                 'enabled' => 1,
     95            'pricing_intent' => self::template(
     96                'Verlaag twijfel rond de volgende stap',
     97                'Geef bezoekers een laagdrempelige manier om vragen te stellen voordat ze beslissen.',
     98                'Stel een vraag'
    14399            ),
    144 
    145             'category_or_tag_intent' => array(
    146                 'title' => 'Zoek je de juiste pagina?',
    147                 'text' => 'Help bezoekers snel naar de belangrijkste vervolgstappen.',
    148                 'button' => 'Bekijk hulpopties',
    149                 'url' => home_url('/'),
    150                 'enabled' => 1,
     100            'category_or_tag_intent' => self::template(
     101                'Wijs bezoekers de juiste route',
     102                'Gebruik deze pagina om bezoekers naar de meest relevante vervolgstap te sturen.',
     103                'Bekijk vervolgstap'
    151104            ),
    152 
    153             'content_intent' => array(
    154                 'title' => 'Hulp nodig met dit onderwerp?',
    155                 'text' => 'Voeg een logische vervolgstap toe die past bij de inhoud van de pagina.',
    156                 'button' => 'Bekijk mogelijkheden',
    157                 'url' => home_url('/contact/'),
    158                 'enabled' => 1,
     105            'content_intent' => self::template(
     106                'Voeg een logische vervolgstap toe',
     107                'Laat de CTA aansluiten op het onderwerp en de intentie van de pagina.',
     108                'Bekijk mogelijkheden'
    159109            ),
    160110        );
    … …  
    174124        return array(
    175125            'homepage_intent' => 'Homepage / algemene instap',
    176             'phone_intent' => 'Belintentie',
    177             'contact_problem_intent' => 'Contact- of bereikbaarheidsprobleem',
    178             'business_service_intent' => 'Zakelijke dienstinteresse',
    179             'plugin_intent' => 'Plugin- of WordPress-interesse',
     126            'phone_intent' => 'Contactintentie',
     127            'contact_problem_intent' => 'Contactprobleem',
     128            'business_service_intent' => 'Dienst- of aanvraagintentie',
     129            'plugin_intent' => 'Product- of toolinteresse',
    180130            'pricing_intent' => 'Prijsinteresse',
    181131            'category_or_tag_intent' => 'Routepagina',
    … …  
    183133        );
    184134    }
     135
     136    private static function template(string $title, string $text, string $button): array {
     137        return array(
     138            'title' => $title,
     139            'text' => $text,
     140            'button' => $button,
     141            'url' => '',
     142            'enabled' => 0,
     143        );
     144    }
     145
     146    private static function merge_templates(array $saved): array {
     147        $templates = array();
     148
     149        foreach (self::defaults() as $intent => $default) {
     150            $value = isset($saved[$intent]) && is_array($saved[$intent])
     151                ? $saved[$intent]
     152                : array();
     153
     154            $templates[$intent] = wp_parse_args($value, $default);
     155        }
     156
     157        return $templates;
     158    }
    185159}
  • avd-cta-insights/trunk/readme.txt

    r3627645 r3649305  
    55Tested up to: 7.0
    66Requires PHP: 8.0
    7 Stable tag: 4.0.0.13
     7Stable tag: 4.0.0.15
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    5555== Changelog ==
    5656
     57= 4.0.0.15 =
     58* Made frontend tracking and dashboard integration more robust.
     59* Removed hardcoded site-specific contact details from the default plugin configuration.
     60* Added configurable CTA, phone and WhatsApp settings.
     61* Improved dashboard, settings, asset loading and WordPress.org deployment compatibility.
     62
    5763= 4.0.0.13 =
    5864* Eerste officiële release van AVD CTA Insights.
Note: See TracChangeset for help on using the changeset viewer.