Title: Cookie Connector For Themer
Author: badabingbreda
Published: <strong>21. Januar 2019</strong>
Last modified: 1. Juni 2023

---

Search plugins

![](https://ps.w.org/cookie-connector-for-themer/assets/banner-772x250.png?rev=2920119)

This plugin **hasn’t been tested with the latest 3 major releases of WordPress**.
It may no longer be maintained or supported and may have compatibility issues when
used with more recent versions of WordPress.

![](https://ps.w.org/cookie-connector-for-themer/assets/icon-128x128.png?rev=2920119)

# Cookie Connector For Themer

 By [badabingbreda](https://profiles.wordpress.org/badabingbreda/)

[Download](https://downloads.wordpress.org/plugin/cookie-connector-for-themer.1.3.1.zip)

 * [Details](https://de-ch.wordpress.org/plugins/cookie-connector-for-themer/#description)
 * [Reviews](https://de-ch.wordpress.org/plugins/cookie-connector-for-themer/#reviews)
 * [Development](https://de-ch.wordpress.org/plugins/cookie-connector-for-themer/#developers)

 [Support](https://wordpress.org/support/plugin/cookie-connector-for-themer/)

## Description

Cookie Connector for (Beaver) Themer

### Plugin description

Cookie Connector for Beaver Themer is an unofficial addon-plugin for the popular
Beaver Themer plugin. It allows you to read cookie-values using the Beaver Themer
Connector and use Conditional Logic to hide/show seperate nodes (modules, columns
and/or rows) using cookie values.

Cookie Connector also allows you to create cookies using an AJAX call. For security
measures you will need to write the AJAX yourself, but an example file on how to
do that can be found here, in the example folder:

[https://github.com/badabingbreda/cookie-connector-for-themer/](https://github.com/badabingbreda/cookie-connector-for-themer/)

**Using the Cookie Connector**
 You can display the Cookie Connector wherever you’d
normally insert it as a string, using either the _connect_ or _insert_ button.

**Using the Conditional Logic filter**
 Because cookies have a certain validity,
it can’t return a value when the cookie isn’t there or has become invalid. The Conditional
Logic filter has an extra parameter to set a default value for whenever it doesn’t
return anything. Setting this parameter return that value whenever it doesn’t exist.

**Writing cookies values**
 Cookies are written before any headers are written to
the visitor’s browser. The downside to that is that cookies can only be read when
the visitor’s sends a request, since they are sent over WITH the request. This means
that you can’t write a cookie’s value and immediately read that cookies new value,
within a single run of a page-call.

To work around that, cookies can be written using an AJAX call.
 «Cookie Connector
for Themer» enqueues a script that registers the `cookieConnector` object, which
handles the security and sending of requests. Let’s consider the following html-
code that is used in a HTML module:

    ```
    <p><a href="javascript:cookieConnector.set( 'setmycookie' , { cv: 'my cookie value' , valid: 3600 } );">Set cookie value</a></p>
    <p><a href="javascript:cookieConnector.set( 'unsetmycookie' );">Unset cookie value</a></p>
    ```

The first parameter is the `actionname` that is going to be called in the PHP script,
so in this example (see below) the part after ‚wp_ajax_‘ and ‚wp_ajax_nopriv_‘.

You can also add an extra, optional, third parameter `debug` that will add a console.
log dump of the response, should you need to know what’s being answered:

    ```
    <p><a href="javascript:cookieConnector.set( 'setmycookie' , { cv: 'my cookie value' , valid: 3600 } , true );">Set cookie value</a></p>
    <p><a href="javascript:cookieConnector.set( 'unsetmycookie', {} , true );">Unset cookie value</a></p>
    ```

**Adding the PHP code to create/change/delete the cookie**
 Clicking the link wil
trigger an AJAX call that will set a cookie on the visitor’s device, if their browser
allows it.

On the server-side, you will need to add one or two ajax callbacks, depending if
the call can be made without being logged in.

    ```
    <?php
        add_action( 'wp_ajax_setmycookie' , 'callback_setmycookie' );
        add_action( 'wp_ajax_nopriv_setmycookie' , 'callback_setmycookie' );
        add_action( 'wp_ajax_unsetmycookie' , 'callback_setmycookie' );
        add_action( 'wp_ajax_nopriv_unsetmycookie' , 'callback_setmycookie' );

        function callback_setmycookie() {
            // first check if this ajax call is
            // done using the script belonging to the installation
            //
            if( ! check_ajax_referer( 'cookie-security-nonce' , 'security' ) ) {
                wp_send_json_error( 'Invalid security token sent.' );
                wp_die();
            }

            // Check if visitor has accepted the cookies from Cookie Notice plugin
            // If you're using another plugin, you should write your own check here
            if ( !function_exists('cn_cookies_accepted') || !cn_cookies_accepted() ) {
                wp_die();
            }
            if ( !defined( 'DOING_AJAX' ) ) define( 'DOING_AJAX' , TRUE );

            // set your cookie name here
            $cookie_name = 'mylanguage';
            $default_validity = 60 * 60; // = 60 minutes

            // try to get the cookie_value
            $cookie_value = isset( $_GET['cv'] ) ? $_GET['cv'] : false;
            // try to get the cookie validity period. If not default to default validity
            $cookie_valid = isset( $_GET['valid'] ) ? $_GET['valid'] : $default_validity;

            // if the action is setmycookie we need a cookie_value (cv) because else it will fail. Check for it and return an error if there isn't one.
            if ( ! $cookie_value && $_GET['action'] == 'setmycookie' ) {
                wp_send_json_error( array( 'success' => false, 'error' => '402', 'message' => 'cookie not set, no value given. ( cv )' ) );
            }

            // check action parameter
            // UNSET mycookie
            if ( 'unsetmycookie' == $_GET['action'] ) {
                setcookie( $cookie_name , 'unset value' , time() - 1 , COOKIEPATH, COOKIE_DOMAIN , isset($_SERVER["HTTPS"]) );
                wp_send_json( array( 'success' => true, 'message' => "Done unsetting cookie '{$cookie_name}'." ) );
            } else if ( 'setmycookie' == $_GET['action'] ) {
                setcookie( $cookie_name , $cookie_value , time() + $cookie_valid , COOKIEPATH, COOKIE_DOMAIN , isset($_SERVER["HTTPS"]), true );
                wp_send_json( array( 'success' => true, 'message' => "Done setting cookie '{$cookie_name}' to value '{$cookie_value}' with validity $cookie_valid seconds." ) );

            }
            wp_die();
        }
    ```

It is advised to use wp_send_json with a ’success‘ parameter (either true or false)
so that you check it in your javascript and add actions after sending the cookieConnector()
command, for instance a reload of the page or forwarding to an url that you received
from the server based on the click.
 For instance, the javascript below will try
to create the cookie. When successful it will display an alert on the browser and
reload the page after 1.5 seconds.

    ```
    <script>
            function cookie_trigger() {
                jQuery.when( cookieConnector.set( 'setmycookie', { cv: jQuery( '#selectlanguage' ).val(), valid: 5 * 60 }, 1 ))
                .done( function( data ) {
                    if ( data.success ) {
                        alert( data.message + '\r You can now safely shut down your browser, restart and visit this URL. This selectbox will reflect the last cookie value.' );
                        setTimeout( function() { location.reload(); }, 1500);
                    }
                });
            }
    </script>
    ```

Special thanks
 Thanks to 10UP for creating this github action for easy deployment.
https://github.com/marketplace/actions/wordpress-plugin-deploy

**version history**

**1.3.1**
 Forgot to update readme.md (this file). Small fix for isset because it’s
not the value that we want (could be falsy) but return if the cookie is set.

**1.3.0**
 Rewrite of plugin using Autoloader. Fixed isset error.

**1.2.0**

Removed admin_notice so that plugin can be used without Beaver Themer and Beaver
Builder too (scripts), for ajax calls.

**1.1.0**

Updated the version because it works on WP 5.4 too

**1.0.1**

Updated example code

**1.0.0**

Initial release (January 18th, 2019)

## Screenshots

[[

[[

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Cookie Connector For Themer” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ badabingbreda ](https://profiles.wordpress.org/badabingbreda/)

[Translate “Cookie Connector For Themer” into your language.](https://translate.wordpress.org/projects/wp-plugins/cookie-connector-for-themer)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/cookie-connector-for-themer/),
check out the [SVN repository](https://plugins.svn.wordpress.org/cookie-connector-for-themer/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/cookie-connector-for-themer/)
by [RSS](https://plugins.trac.wordpress.org/log/cookie-connector-for-themer/?limit=100&mode=stop_on_copy&format=rss).

## Meta

 *  Version **1.3.1**
 *  Last updated **3 Jahren ago**
 *  Active installations **10+**
 *  WordPress version ** 4.7 or higher **
 *  Tested up to **5.5.23**
 *  PHP version ** 5.6.3 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/cookie-connector-for-themer/)
 * Tags
 * [beaver builder](https://de-ch.wordpress.org/plugins/tags/beaver-builder/)[beaver themer](https://de-ch.wordpress.org/plugins/tags/beaver-themer/)
   [connector](https://de-ch.wordpress.org/plugins/tags/connector/)[cookie](https://de-ch.wordpress.org/plugins/tags/cookie/)
 *  [Advanced View](https://de-ch.wordpress.org/plugins/cookie-connector-for-themer/advanced/)

## Ratings

Es wurden noch keine Rezensionen eingereicht.

[Your review](https://wordpress.org/support/plugin/cookie-connector-for-themer/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/cookie-connector-for-themer/reviews/)

## Contributors

 *   [ badabingbreda ](https://profiles.wordpress.org/badabingbreda/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/cookie-connector-for-themer/)