chrisburge
Forum Replies Created
Viewing 1 replies (of 1 total)
-
Forum: Plugins
In reply to: [WP Version in Query String Modifier] Support External IncrementPatch is below:
From ff56242192f8f824adcddfac08d18cdcb3319af7 Mon Sep 17 00:00:00 2001 From: Chris Burge Date: Wed, 6 Sep 2017 12:43:16 -0500 Subject: [PATCH] Support external increment --- tmpl/menu.php | 24 +++++++++++++++++ wp-version-in-query-string-modifier.php | 48 ++++++++++++++++++++++++++++++++- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/tmpl/menu.php b/tmpl/menu.php index 0c553c8..d089839 100644 --- a/tmpl/menu.php +++ b/tmpl/menu.php @@ -16,6 +16,10 @@ $check_i = ' checked="checked"'; $disable_increment = false; } + if (!isset($options['externalKey'])) { + $options['externalKey'] = md5(uniqid(rand(), true)); + } + ?> <div class='wrap'> <h2><?php echo WPVQSM_LONG_NAME; ?></h2> @@ -34,6 +38,10 @@ <th><label><input type='radio' <?php echo $check_i; ?> value='i' name='selection'>Cache Buster</label></th> <td><code><?php echo $site_url; ?>/wp-includes/js/jquery/jquery.js?ver=<span id='inc_index'><?php echo $ndx; ?></span></code> <input type='button' value='Increment' id='increment' class='button-primary'></td> </tr> + <tr class="external-key"> + <th></th> + <td><label for="external-key">External Key: </label><input type="text" name="externalKey" size="32" value="<?php print $options['externalKey']; ?>"/><br /><br />The cache buster can be externally incremented using the URL below:<br /><br /><code><?php print get_site_url() . 'wp-json/wpvqsm/v1/increment?key=<span class="external-key-inline">' . $options['externalKey'] . '</span>'; ?></code></td> + </tr> <tr> <th><label><input type='radio' <?php echo $check_r; ?> value='r' name='selection'> Remove Version</label></th> <td><code><?php echo $site_url; ?>/wp-includes/js/jquery/jquery.js</code></td> @@ -87,5 +95,21 @@ } }); }); + var selection = $('input:radio[name=selection]'); + selection.change(function () { + var value = this.value; + if (value != "i") { + $('.external-key').hide(); + } + else { + $('.external-key').show(); + } + }); + var externalKey = $('input:text[name=externalKey]'); + externalKey.change(function () { + var value = this.value; + console.log(value); + $('.external-key-inline').text(value); + }); })(jQuery); </script> \ No newline at end of file diff --git a/wp-version-in-query-string-modifier.php b/wp-version-in-query-string-modifier.php index 537d17f..1eb5b88 100644 --- a/wp-version-in-query-string-modifier.php +++ b/wp-version-in-query-string-modifier.php @@ -134,6 +134,7 @@ function wpvqsm_update_callback() { $options = wpvqsm_get_options(); $options['selection'] = $_POST['selection']; $options['addTime'] = $_POST['addTime']; + $options['externalKey'] = $_POST['externalKey']; wpvqsm_update_options( $options ); wp_safe_redirect( 'options-general.php?settings-updated=true&page=' . WPVQSM ); } @@ -162,6 +163,49 @@ function wpvqsm_ajax_callback() { die( 1 ); } +/** + * Callback function for REST API. + * + * @since 1.x + * + */ +function wpvqsm_external_increment_callback(WP_REST_Request $data) { + + // Get options. + $options = wpvqsm_get_options(); + + if ($options['selection'] != 'i') { + return rest_ensure_response( array("enabled"=>false)); + } + + // Get key from query string and validate. + $query_string = $data->get_query_params(); + $key = $query_string['key']; + if (is_null($options['externalKey']) || $key != $options['externalKey']) { + return rest_ensure_response( array("authorized"=>false)); + } + + // Update Increment value. + ++$options['increment']; + wpvqsm_update_options( $options ); + + // rest_ensure_response() wraps the data we want to return into a WP_REST_Response, and ensures it will be properly returned. + return rest_ensure_response( array("authorized"=>true, "increment"=>$options['increment']) ); +} + +/** + * Register REST route for endpoint. + * + * @since 1.x + * + */ +function wpvqsm_external_increment() { + register_rest_route( 'wpvqsm/v1', '/increment', array( + 'methods' => 'GET', + 'callback' => 'wpvqsm_external_increment_callback', + ) ); +} + /** * plugin activation process * @@ -224,4 +268,6 @@ if ( is_admin() ){ } add_filter( 'script_loader_src', WPVQSM. 'modify_version' ); -add_filter( 'style_loader_src', WPVQSM. 'modify_version' ); \ No newline at end of file +add_filter( 'style_loader_src', WPVQSM. 'modify_version' ); + +add_action( 'rest_api_init', WPVQSM . 'external_increment' ); \ No newline at end of file -- 2.14.1.windows.1
Viewing 1 replies (of 1 total)