Plugin Directory

Changeset 2579450


Ignore:
Timestamp:
08/06/2021 04:51:54 PM (5 years ago)
Author:
kduffie
Message:

WPRM custom taxonomies, WPRocket, and Astra support

Location:
slick-engagement
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • slick-engagement/trunk/SlickEngagement_Plugin.php

    r2541449 r2579450  
    131131        // http://plugin.michael-simpson.com/?page_id=41
    132132
    133 // Ensure pages can be configured with categories and tags
     133        // Ensure pages can be configured with categories and tags
    134134        add_action('init', array(&$this, 'add_taxonomies_to_pages'));
    135135
     
    149149            add_action('thesis_hook_after_header', array(&$this, 'np_slickstream_space_genesis'), $reserveFilmstripPriority);
    150150            add_action('kadence_after_header', array(&$this, 'np_slickstream_space_genesis'), $reserveFilmstripPriority);
     151            add_action('astra_header_after', array(&$this, 'np_slickstream_space_genesis'), $reserveFilmstripPriority);
    151152        } else if ($reserveFilmstripSpace === BEFORE_CONTENT_GENESIS_TLA || $reserveFilmstripSpace === BEFORE_CONTENT_GENESIS) {
    152153            // $this->guildLog('Adding before-content filmstrip injection');
     
    156157            add_action('thesis_hook_before_content', array(&$this, 'np_slickstream_space_genesis'), $reserveFilmstripPriority);
    157158            add_action('kadence_before_content', array(&$this, 'np_slickstream_space_genesis'), $reserveFilmstripPriority);
     159            add_action('astra_content_before', array(&$this, 'np_slickstream_space_genesis'), $reserveFilmstripPriority);
    158160        } else if ($reserveFilmstripSpace === CUSTOM && !empty($reserveFilmstripCustom)) {
    159161            add_action($reserveFilmstripCustom, array(&$this, 'np_slickstream_space_genesis'), $reserveFilmstripPriority);
    160162        }
     163
     164        add_filter('rocket_delay_js_exclusions', array(&$this, 'np_wp_rocket__exclude_from_delay_js'));
     165    }
     166
     167    // Exclude scripts from JS delay.
     168    public function np_wp_rocket__exclude_from_delay_js($excluded_strings = array())
     169    {
     170        // MUST ESCAPE PERIODS AND PARENTHESES!
     171        $excluded_strings[] = "slickstream";
     172        return $excluded_strings;
    161173    }
    162174
     
    330342        global $post;
    331343        echo "\n";
    332         echo '<meta property="slick:wpversion" content="1.1.17" />' . "\n";
     344        echo '<meta property="slick:wpversion" content="1.1.18" />' . "\n";
    333345        $siteCode = trim($this->getOption('SiteCode'));
    334346        if ($siteCode) {
     
    387399        $ldJsonPlugin = (object) [
    388400            '@type' => 'Plugin',
    389             'version' => '1.1.17',
     401            'version' => '8',
    390402        ];
    391403        array_push($ldJsonElements, $ldJsonPlugin);
     
    536548                }
    537549
     550                $ldJsonTaxonomies = array();
    538551                $taxonomies = get_object_taxonomies($post, 'objects');
    539552                if (!empty($taxonomies)) {
    540                     $ldJsonTaxonomies = array();
    541553                    foreach ($taxonomies as $taxonomy) {
    542                         if (!$taxonomy->_builtin && $taxonomy->public) {
     554                        if (empty($taxonomy->_builtin) && $taxonomy->public) {
    543555                            $taxTerms = array();
    544556                            $terms = get_the_terms($post, $taxonomy->name);
     
    562574                        }
    563575                    }
    564                     $ldJsonPost->taxonomies = $ldJsonTaxonomies;
    565                 }
     576                }
     577                if (class_exists('WPRM_Recipe_Manager')) {
     578                    // $postTypeArgs = array('public' => true, '_builtin' => false);
     579                    // $ldJsonPost->postTypes = get_post_types($postTypeArgs, 'names', 'and');
     580                    $recipes = WPRM_Recipe_Manager::get_recipe_ids_from_post($post->ID);
     581                    // $ldJsonPost->recipes = $recipes;
     582                    if (!empty($recipes)) {
     583                        // $recipe = WPRM_Recipe_Manager::get_recipe($recipes[0]);
     584                        // $ldJsonPost->recipe = $recipe;
     585                        // $ldJsonPost->recipeId = $recipes[0];
     586                        $recipeTaxonomies = get_object_taxonomies('wprm_recipe', 'objects');
     587                        // $ldJsonPost->recipeTaxonomies = $recipeTaxonomies;
     588                        if (!empty($recipeTaxonomies)) {
     589                            foreach ($recipeTaxonomies as $taxonomy) {
     590                                if (empty($taxonomy->_builtin) && $taxonomy->public) {
     591                                    $taxTerms = array();
     592                                    $terms = get_the_terms($recipes[0], $taxonomy->name);
     593                                    // $lsJsonPost->taxTerms = $terms;
     594                                    if (!empty($terms)) {
     595                                        foreach ($terms as $term) {
     596                                            $termObject = (object) [
     597                                                '@id' => $term->term_id,
     598                                                'name' => $term->name,
     599                                                'slug' => $term->slug,
     600                                            ];
     601                                            array_push($taxTerms, $termObject);
     602                                        }
     603                                        $ldJsonTaxElement = (object) [
     604                                            'name' => $taxonomy->name,
     605                                            'label' => $taxonomy->label,
     606                                            'description' => $taxonomy->description,
     607                                            'terms' => $taxTerms,
     608                                        ];
     609                                        array_push($ldJsonTaxonomies, $ldJsonTaxElement);
     610                                    }
     611                                }
     612                            }
     613                        }
     614                    }
     615                }
     616                $ldJsonPost->taxonomies = $ldJsonTaxonomies;
    566617            }
    567618            array_push($ldJsonElements, $ldJsonPost);
  • slick-engagement/trunk/readme.txt

    r2541449 r2579450  
    22Contributors: kduffie
    33Donate link:  https://slickstream.com
    4 Tags: search, favorites, recommendations, navigation, engagement, widgets, filmstrip, carousel
     4Tags: search,recommendations,favorites,navigation,engagement,better search,advanced search,category search,relevant search,carousel,bookmarks,stories
    55License: GPLv2 or later
    66License URI: http://www.gnu.org/licenses/gpl-2.0.html
    7 Requires at least: 4.0
     7Requires at least: 5.0
     8Requires PHP: 5.6
    89Tested up to: 5.7.2
    9 Stable tag: 1.1.17
    10 
    11 Increase pageviews and delight visitors with fast and responsive site search, beautiful content discovery tools and more.
     10Stable tag: 1.1.18
     11
     12Slickstream makes it easy to upgrade your site search. Get beautiful as-you-type search, relevant content recommendations, user favorites and more!
    1213
    1314== Description ==
    1415
    15 Slickstream is a startup with a simple mission: To help publishers create exceptional user experiences and maximize their visitor engagement.
    16 
    17 This plugin is for users of the [Slickstream Engagement Suite](https://www.slickstream.com/engagement-suite) — it adds our embed code to your pages and registers tools that you can place anywhere on your pages. These tools provide visitors with a simple interactive way to see all of the content available on your site in a highly engaging way. We use contextual information to maximize the likelihood that a visitor will see another page that will interest them.
    18 
    19 You have several tools and options to choose from, including Responsive Search, Filmstrips, User Favorites and Games. For more information, or to sign up for our 30-day free trial, visit us at [slickstream.com](https://slickstream.com).
     16At Slickstream, we believe that giving website visitors a great experience is the best way to steadily build traffic volume over time. That's why we make it easy for publishers to add world-class search and engagement tools without a complicated technical integration or lengthy onboarding.
     17
     18This plugin is for users of the [Slickstream Engagement Suite](https://bloggers.slickstream.com) and [Slickstream for Business](https://business.slickstream.com/). It adds our embed code to your pages and registers tools that you can place anywhere on your pages. Subscriptions start at $10/mo, and we offer a [completely free 30-day trial](https://bloggers.slickstream.com/get-slick) that doesn’t even require a credit card.
     19
     20Slickstream users get unlimited access to all of our tools, including:
     21- Responsive *as-you-type search* with a heap of advanced features that your visitors will love
     22- Customizable *recommendation carousels and grids* backed by real data
     23- Hassle-free *content favoriting* to keep your visitors coming back
     24- A robust *analytics portal* with engagement insights you can actually use
     25
     26## The Slickstream Difference
     27
     28What makes Slickstream different is that we handle the hard work for you. We sit outside of WordPress, which means when you sign up we build a model of your site and use it to populate all of our search and recommendation tools. Then you pick the ones you want to use, flip a switch, and we’re live! Your site can be running Slickstream tomorrow, with no complicated technical implementation required.
     29
     30## What's Included
     31
     32- Floating Search: Search with Slickstream on any page
     33- Hooked Search Buttons: Automatically link your existing search to Slickstream
     34- Inline Search Module: As-you-type search results displaying on page
     35- Infinite Filmstrip: Content recommendations placed above posts
     36- Filmstrip Toolbar: Sticky recommendations that display on scroll
     37- Content Grid: Flexible recommendation module that can be placed anywhere
     38- Floating Favorites: Interactive content bookmarking with no sign-in required
     39- Floating Back-to-Top: Simple option to return to top of content
     40- Web Story Player: Full site integrations for existing web stories
     41- Interactive Games: Automatically generated minigames featuring recommendations
     42- Campaigns: Incorporate custom objectives into user experience (business only)
     43- Analytics Portal: Robust insights into both Slickstream statistics and general
     44
     45## General Features and Integrations:
     46
     47- Supports all major themes and editors
     48- Search or recommend content across multiple domains
     49- Multi-language search results supported
     50- Configurable GDPR settings
     51- Designed for accessibility compliance
     52- Client-side API available
     53- Email provider integrations (MailChimp, ConvertKit, ActiveCampaign)
     54- First-party data integration with advertising networks
     55- Google Analytics integration
     56- Recipe card integrations (WP Recipe Maker, Tasty Recipes)
     57- E-commerce integration (Shopify)
     58
     59## Configuration Options:
     60
     61- Pre-made templates to choose from
     62- Granular look and feel controls
     63- Custom messaging on all text prompts
     64- Attribution removal (additional charge)
     65- Built-in CLS (Cumulative Layout Shift) handling
     66- Optional opt-in email collection
     67- Optional advertising slot inclusions
     68
     69## Search and Recommendation Details:
     70
     71- Search by category, content type, or author
     72- Default sort by relevance, date, or popularity
     73- Custom result weighting in search and recommendations
     74- Manual categorization and content grouping control
     75- Exclude results by category, content type, or individual posts
     76- Custom taxonomies supported
     77- Progressively detailed results including metadata
     78- Automatic content grouping in results
     79- Fuzzy matching and typo forgiveness
     80- Highlighted search terms in results
     81- Structured data search experience for ingredients or supplies
     82- All search queries recorded in analytics
     83
     84== FAQ ==
     85
     86= What’s Included With the 30-Day Free Trial? =
     87Everything! When you sign up for our free 30-day trial, we set your website up with the tools you want, at zero cost to you — we won’t even ask for your credit card information up front. If for any reason you don’t like it, you can cancel at any point during your 30-day trial without paying a dime.
     88
     89If you decide to subscribe, you will need to provide a credit card at that point. You will not be charged for any previous usage — instead, starting one month later, you will be charged based on actual traffic volume during that month.
     90
     91= Do You Support Languages Other Than English? =
     92Yes we do. Our underlying recommendation technology is not English-specific, and we have already localized the Engagement Suite for German, Portuguese, Spanish, Dutch, French, Norwegian, Swedish, Croatian, Russian, Danish, Arabic, Hebrew, Japanese and more. [Reach out to us](https://www.slickstream.com/contact) and we can confirm if we support your language too.
     93
     94= How Long Will Slickstream Take to Set Up? =
     95Your site can be running Slickstream tomorrow, without any complicated technical implementation. Once you've been approved for a trial, we’ll get your site ready to go within hours.
     96
     97= How Do I Get Started? =
     98It’s simple: [sign up for your free trial here](https://bloggers.slickstream.com/get-slick), and we’ll send you a pre-configured demo page. Then just install the plugin, review and adjust your settings, and go live!
    2099
    21100== Installation ==
     
    28107== Screenshots ==
    29108
    30 1. A Slickstream filmstrip for recommendations
    31 2. Slickstream favorites (hearts)
    32 3. Slickstream as-you-type search
     1091. Slickstream Search in action, filtered by "sauce" and displaying results for "chipotle" along with appropriate metadata.
     1102. The on-page experience for Slickstream users. On display are Favorites/Bookmarks, Floating Search, Back-To-Top and the Filmstrip Toolbar.
     1113. Automatic categorization within the Slickstream panel. Here you can see results for "dessert" grouped by popularity, date, and a related subcategory ("baking").
    33112
    34113== Changelog ==
     
    140219- Remove extraneous logging
    141220- Add support for custom injection hook
     221
     222= 1.1.18
     223- Add widgets and shortcodes for inline-search widget
     224- Initial support for Gutenberg blocks
  • slick-engagement/trunk/slick-engagement.php

    r2541449 r2579450  
    33Plugin Name: Slickstream Search and Engagement
    44Plugin URI: https://slickstream.com/getting-started
    5 Version: 1.1.17
     5Version: 1.1.18
    66Author: Slickstream
    77Author URI: https://slickstream.com
Note: See TracChangeset for help on using the changeset viewer.