Contextual Related Posts - Version 3.0.6

Version Description

Release post: https://webberzone.com/blog/contextual-related-posts-v3-0-0/

  • Enhancement:

    • Defining CRP_CACHE_TIME to false will disable expiry
    • Introduced wpml-config.xml file. Title and Custom text for blank output can now be translated with Polylang (and potentially WPML)
  • Bug fix:

    • Exclude on categories did not work
    • Posts would trigger a "SHOW FULL COLUMNS FROM" error if they had ' from' in the title
    • Manual posts did not work properly - all post types and all posts are properly fetched now
Download this release

Release Info

Developer Ajay
Plugin Icon 128x128 Contextual Related Posts
Version 3.0.6
Comparing to
See all releases

Code changes from version 3.0.5 to 3.0.6

README.md CHANGED
@@ -8,7 +8,7 @@
8
 
9
  __Requires:__ 5.0
10
 
11
- __Tested up to:__ 5.6
12
 
13
  __License:__ [GPL-2.0+](http://www.gnu.org/licenses/gpl-2.0.html)
14
 
8
 
9
  __Requires:__ 5.0
10
 
11
+ __Tested up to:__ 5.7
12
 
13
  __License:__ [GPL-2.0+](http://www.gnu.org/licenses/gpl-2.0.html)
14
 
contextual-related-posts.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: Contextual Related Posts
16
  * Plugin URI: https://webberzone.com/plugins/contextual-related-posts/
17
  * Description: Display a set of related posts on your website or in your feed. Increase reader retention and reduce bounce rates
18
- * Version: 3.0.5
19
  * Author: WebberZone
20
  * Author URI: https://webberzone.com
21
  * License: GPL-2.0+
@@ -38,7 +38,7 @@ if ( ! defined( 'WPINC' ) ) {
38
  * @var string Contextual Related Posts Version.
39
  */
40
  if ( ! defined( 'CRP_VERSION' ) ) {
41
- define( 'CRP_VERSION', '3.0.0' );
42
  }
43
 
44
 
15
  * Plugin Name: Contextual Related Posts
16
  * Plugin URI: https://webberzone.com/plugins/contextual-related-posts/
17
  * Description: Display a set of related posts on your website or in your feed. Increase reader retention and reduce bounce rates
18
+ * Version: 3.0.6
19
  * Author: WebberZone
20
  * Author URI: https://webberzone.com
21
  * License: GPL-2.0+
38
  * @var string Contextual Related Posts Version.
39
  */
40
  if ( ! defined( 'CRP_VERSION' ) ) {
41
+ define( 'CRP_VERSION', '3.0.6' );
42
  }
43
 
44
 
includes/class-crp-query.php CHANGED
@@ -371,7 +371,7 @@ if ( ! class_exists( 'CRP_Query' ) ) :
371
  );
372
 
373
  $match_fields_content = array(
374
- $this->source_post->post_title,
375
  );
376
 
377
  if ( $this->query_args['match_content'] ) {
@@ -613,10 +613,11 @@ if ( ! class_exists( 'CRP_Query' ) ) :
613
  if ( ! empty( $post_ids ) ) {
614
  $posts = get_posts(
615
  array(
616
- 'post__in' => $post_ids,
617
- 'fields' => $query->get( 'fields' ),
618
- 'orderby' => 'post__in',
619
- 'post_type' => $query->get( 'post_type' ),
 
620
  )
621
  );
622
  $query->found_posts = count( $posts );
@@ -666,10 +667,11 @@ if ( ! class_exists( 'CRP_Query' ) ) :
666
  if ( ! empty( $post_ids ) ) {
667
  $extra_posts = get_posts(
668
  array(
669
- 'post__in' => $post_ids,
670
- 'fields' => $query->get( 'fields' ),
671
- 'orderby' => 'post__in',
672
- 'post_type' => $query->get( 'post_type' ),
 
673
  )
674
  );
675
  $posts = array_merge( $extra_posts, $posts );
371
  );
372
 
373
  $match_fields_content = array(
374
+ str_ireplace( ' from', '', $this->source_post->post_title ),
375
  );
376
 
377
  if ( $this->query_args['match_content'] ) {
613
  if ( ! empty( $post_ids ) ) {
614
  $posts = get_posts(
615
  array(
616
+ 'post__in' => $post_ids,
617
+ 'fields' => $query->get( 'fields' ),
618
+ 'orderby' => 'post__in',
619
+ 'numberposts' => $query->get( 'posts_per_page' ),
620
+ 'post_type' => $query->get( 'post_type' ),
621
  )
622
  );
623
  $query->found_posts = count( $posts );
667
  if ( ! empty( $post_ids ) ) {
668
  $extra_posts = get_posts(
669
  array(
670
+ 'post__in' => $post_ids,
671
+ 'fields' => $query->get( 'fields' ),
672
+ 'orderby' => 'post__in',
673
+ 'numberposts' => '-1',
674
+ 'post_type' => 'any',
675
  )
676
  );
677
  $posts = array_merge( $extra_posts, $posts );
includes/content.php CHANGED
@@ -51,36 +51,11 @@ function crp_content_filter( $content ) {
51
  return $content;
52
  }
53
 
54
- // If this post ID is in the DO NOT DISPLAY list.
55
- $exclude_on_post_ids = explode( ',', crp_get_option( 'exclude_on_post_ids' ) );
56
- if ( in_array( $post->ID, $exclude_on_post_ids ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
57
  return $content; // Exit without adding related posts.
58
  }
59
 
60
- // If this post type is in the DO NOT DISPLAY list.
61
- // If post_types is empty or contains a query string then use parse_str else consider it comma-separated.
62
- if ( crp_get_option( 'exclude_on_post_types' ) && false === strpos( crp_get_option( 'exclude_on_post_types' ), '=' ) ) {
63
- $exclude_on_post_types = explode( ',', crp_get_option( 'exclude_on_post_types' ) );
64
- } else {
65
- parse_str( crp_get_option( 'exclude_on_post_types' ), $exclude_on_post_types ); // Save post types in $exclude_on_post_types variable.
66
- }
67
-
68
- if ( in_array( $post->post_type, $exclude_on_post_types, true ) ) {
69
- return $content; // Exit without adding related posts.
70
- }
71
- // If the DO NOT DISPLAY meta field is set.
72
- $crp_post_meta = get_post_meta( $post->ID, 'crp_post_meta', true );
73
-
74
- if ( isset( $crp_post_meta['crp_disable_here'] ) ) {
75
- $crp_disable_here = $crp_post_meta['crp_disable_here'];
76
- } else {
77
- $crp_disable_here = 0;
78
- }
79
-
80
- if ( $crp_disable_here ) {
81
- return $content;
82
- }
83
-
84
  $add_to = crp_get_option( 'add_to', false );
85
 
86
  // Else add the content.
51
  return $content;
52
  }
53
 
54
+ // Check exclusions.
55
+ if ( crp_exclude_on( $post ) ) {
 
56
  return $content; // Exit without adding related posts.
57
  }
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  $add_to = crp_get_option( 'add_to', false );
60
 
61
  // Else add the content.
includes/main-query.php CHANGED
@@ -21,11 +21,8 @@ if ( ! defined( 'WPINC' ) ) {
21
  function get_crp( $args = array() ) {
22
  global $post, $crp_settings;
23
 
24
- // If set, save $exclude_categories.
25
- if ( isset( $args['exclude_categories'] ) && '' != $args['exclude_categories'] ) { // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
26
- $exclude_categories = explode( ',', $args['exclude_categories'] );
27
- $args['strict_limit'] = false;
28
- }
29
  $defaults = array(
30
  'is_widget' => false,
31
  'is_shortcode' => false,
@@ -57,7 +54,12 @@ function get_crp( $args = array() ) {
57
  $short_circuit = apply_filters( 'get_crp_short_circuit', $short_circuit, $post, $args );
58
 
59
  if ( $short_circuit ) {
60
- return false;
 
 
 
 
 
61
  }
62
 
63
  // WPML & PolyLang support - change strict limit to false.
@@ -227,6 +229,8 @@ function get_crp( $args = array() ) {
227
  function get_crp_posts_id( $args = array() ) {
228
  global $wpdb, $post, $crp_settings;
229
 
 
 
230
  // Initialise some variables.
231
  $fields = '';
232
  $where = '';
21
  function get_crp( $args = array() ) {
22
  global $post, $crp_settings;
23
 
24
+ $crp_settings = crp_get_settings();
25
+
 
 
 
26
  $defaults = array(
27
  'is_widget' => false,
28
  'is_shortcode' => false,
54
  $short_circuit = apply_filters( 'get_crp_short_circuit', $short_circuit, $post, $args );
55
 
56
  if ( $short_circuit ) {
57
+ return ''; // Exit without adding related posts.
58
+ }
59
+
60
+ // Check exclusions.
61
+ if ( crp_exclude_on( $post ) ) {
62
+ return ''; // Exit without adding related posts.
63
  }
64
 
65
  // WPML & PolyLang support - change strict limit to false.
229
  function get_crp_posts_id( $args = array() ) {
230
  global $wpdb, $post, $crp_settings;
231
 
232
+ $crp_settings = crp_get_settings();
233
+
234
  // Initialise some variables.
235
  $fields = '';
236
  $where = '';
includes/modules/cache.php CHANGED
@@ -17,13 +17,12 @@ if ( ! defined( 'WPINC' ) ) {
17
  */
18
  function crp_ajax_clearcache() {
19
 
20
- $count = crp_cache_delete();
21
  exit(
22
  wp_json_encode(
23
  array(
24
  'success' => 1,
25
- /* translators: 1: Number of entries. */
26
- 'message' => sprintf( _n( '%s entry cleared', '%s entries cleared', $count, 'contextual-related-posts' ), number_format_i18n( $count ) ),
27
  )
28
  )
29
  );
@@ -239,6 +238,10 @@ function get_crp_cache( $post_id, $key ) {
239
 
240
  $value = get_post_meta( $post_id, $meta_key, true );
241
 
 
 
 
 
242
  if ( $value ) {
243
  $expires = (int) get_post_meta( $post_id, $cache_expires, true );
244
  if ( $expires < time() || empty( $expires ) ) {
@@ -247,6 +250,8 @@ function get_crp_cache( $post_id, $key ) {
247
  } else {
248
  return $value;
249
  }
 
 
250
  }
251
  }
252
 
17
  */
18
  function crp_ajax_clearcache() {
19
 
20
+ crp_cache_delete();
21
  exit(
22
  wp_json_encode(
23
  array(
24
  'success' => 1,
25
+ 'message' => __( 'Cache has been cleared', 'contextual-related-posts' ),
 
26
  )
27
  )
28
  );
238
 
239
  $value = get_post_meta( $post_id, $meta_key, true );
240
 
241
+ if ( ! CRP_CACHE_TIME ) {
242
+ return $value;
243
+ }
244
+
245
  if ( $value ) {
246
  $expires = (int) get_post_meta( $post_id, $cache_expires, true );
247
  if ( $expires < time() || empty( $expires ) ) {
250
  } else {
251
  return $value;
252
  }
253
+ } else {
254
+ return false;
255
  }
256
  }
257
 
includes/modules/exclusions.php CHANGED
@@ -37,3 +37,66 @@ function crp_exclude_post_ids( $exclude_post_ids ) {
37
  }
38
  add_filter( 'crp_exclude_post_ids', 'crp_exclude_post_ids' );
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
38
  add_filter( 'crp_exclude_post_ids', 'crp_exclude_post_ids' );
39
 
40
+
41
+ /**
42
+ * Processes exclusion settings to return if the related posts should not be displayed on the current post.
43
+ *
44
+ * @since 3.0.6
45
+ *
46
+ * @param int|WP_Post|null $post Post ID or post object. Defaults to global $post. Default null.
47
+ * @param array $args Parameters in a query string format.
48
+ * @return bool True if any exclusion setting is matched.
49
+ */
50
+ function crp_exclude_on( $post = null, $args = array() ) {
51
+ $post = get_post( $post );
52
+ if ( ! $post ) {
53
+ return false;
54
+ }
55
+
56
+ // If this post ID is in the DO NOT DISPLAY list.
57
+ $exclude_on_post_ids = isset( $args['exclude_on_post_ids'] ) ? $args['exclude_on_post_ids'] : crp_get_option( 'exclude_on_post_ids' );
58
+ $exclude_on_post_ids = explode( ',', $exclude_on_post_ids );
59
+ if ( in_array( $post->ID, $exclude_on_post_ids ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
60
+ return true;
61
+ }
62
+
63
+ // If this post type is in the DO NOT DISPLAY list.
64
+ // If post_types is empty or contains a query string then use parse_str else consider it comma-separated.
65
+ $exclude_on_post_types = isset( $args['exclude_on_post_types'] ) ? $args['exclude_on_post_types'] : crp_get_option( 'exclude_on_post_types' );
66
+ if ( $exclude_on_post_types && false === strpos( $exclude_on_post_types, '=' ) ) {
67
+ $exclude_on_post_types = explode( ',', $exclude_on_post_types );
68
+ } else {
69
+ parse_str( $exclude_on_post_types, $exclude_on_post_types ); // Save post types in $exclude_on_post_types variable.
70
+ }
71
+
72
+ if ( in_array( $post->post_type, $exclude_on_post_types, true ) ) {
73
+ return true;
74
+ }
75
+
76
+ // If this post's category is in the DO NOT DISPLAY list.
77
+ $exclude_on_categories = isset( $args['exclude_on_categories'] ) ? $args['exclude_on_categories'] : crp_get_option( 'exclude_on_categories' );
78
+ $exclude_on_categories = explode( ',', $exclude_on_categories );
79
+ $post_categories = get_the_terms( $post->ID, 'category' );
80
+ $categories = array();
81
+ if ( ! empty( $post_categories ) && ! is_wp_error( $post_categories ) ) {
82
+ $categories = wp_list_pluck( $post_categories, 'term_taxonomy_id' );
83
+ }
84
+ if ( ! empty( array_intersect( $exclude_on_categories, $categories ) ) ) {
85
+ return true;
86
+ }
87
+
88
+ // If the DO NOT DISPLAY meta field is set.
89
+ $crp_post_meta = get_post_meta( $post->ID, 'crp_post_meta', true );
90
+
91
+ if ( isset( $crp_post_meta['crp_disable_here'] ) ) {
92
+ $crp_disable_here = $crp_post_meta['crp_disable_here'];
93
+ } else {
94
+ $crp_disable_here = 0;
95
+ }
96
+
97
+ if ( $crp_disable_here ) {
98
+ return true;
99
+ }
100
+
101
+ return false;
102
+ }
includes/modules/shortcode.php CHANGED
@@ -22,6 +22,7 @@ if ( ! defined( 'WPINC' ) ) {
22
  */
23
  function crp_shortcode( $atts, $content = null ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
24
  global $crp_settings;
 
25
 
26
  $atts = shortcode_atts(
27
  array_merge(
22
  */
23
  function crp_shortcode( $atts, $content = null ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
24
  global $crp_settings;
25
+ $crp_settings = crp_get_settings();
26
 
27
  $atts = shortcode_atts(
28
  array_merge(
languages/contextual-related-posts-en_US.mo CHANGED
Binary file
languages/contextual-related-posts-en_US.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Contextual Related Posts\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2021-02-07 11:02+0000\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: Ajay D'Souza\n"
8
  "Language-Team: WebberZone\n"
@@ -13,7 +13,7 @@ msgstr ""
13
  "X-Poedit-KeywordsList: __;_e;_c;__ngettext;esc_html__;esc_attr__;esc_html_e;"
14
  "esc_attr_e\n"
15
  "X-Poedit-Basepath: ..\n"
16
- "X-Generator: Poedit 2.3\n"
17
  "X-Poedit-SourceCharset: UTF-8\n"
18
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
  "X-Poedit-SearchPath-0: .\n"
@@ -1217,7 +1217,7 @@ msgstr ""
1217
  msgid "Follow me"
1218
  msgstr ""
1219
 
1220
- #: includes/main-query.php:188
1221
  #, php-format
1222
  msgid ""
1223
  "Powered by <a href=\"%s\" rel=\"nofollow\" style=\"float:none\">Contextual "
@@ -1236,6 +1236,10 @@ msgstr ""
1236
  msgid "filter argument has been deprecated"
1237
  msgstr ""
1238
 
 
 
 
 
1239
  #: includes/modules/class-crp-widget.php:31
1240
  msgid "Display Related Posts"
1241
  msgstr ""
2
  msgstr ""
3
  "Project-Id-Version: Contextual Related Posts\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2021-02-27 19:43+0000\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: Ajay D'Souza\n"
8
  "Language-Team: WebberZone\n"
13
  "X-Poedit-KeywordsList: __;_e;_c;__ngettext;esc_html__;esc_attr__;esc_html_e;"
14
  "esc_attr_e\n"
15
  "X-Poedit-Basepath: ..\n"
16
+ "X-Generator: Poedit 2.4.2\n"
17
  "X-Poedit-SourceCharset: UTF-8\n"
18
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
  "X-Poedit-SearchPath-0: .\n"
1217
  msgid "Follow me"
1218
  msgstr ""
1219
 
1220
+ #: includes/main-query.php:190
1221
  #, php-format
1222
  msgid ""
1223
  "Powered by <a href=\"%s\" rel=\"nofollow\" style=\"float:none\">Contextual "
1236
  msgid "filter argument has been deprecated"
1237
  msgstr ""
1238
 
1239
+ #: includes/modules/cache.php:25
1240
+ msgid "Cache has been cleared"
1241
+ msgstr ""
1242
+
1243
  #: includes/modules/class-crp-widget.php:31
1244
  msgid "Display Related Posts"
1245
  msgstr ""
languages/contextual-related-posts-en_US.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Contextual Related Posts\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2021-02-07 11:02+0000\n"
7
  "PO-Revision-Date: \n"
8
  "Last-Translator: Ajay D'Souza\n"
9
  "Language-Team: WebberZone\n"
@@ -14,7 +14,7 @@ msgstr ""
14
  "X-Poedit-KeywordsList: __;_e;_c;__ngettext;esc_html__;esc_html_e;esc_attr__;"
15
  "esc_attr_e\n"
16
  "X-Poedit-Basepath: ..\n"
17
- "X-Generator: Poedit 2.3\n"
18
  "X-Poedit-SourceCharset: UTF-8\n"
19
  "X-Poedit-SearchPath-0: .\n"
20
 
@@ -1217,7 +1217,7 @@ msgstr ""
1217
  msgid "Follow me"
1218
  msgstr ""
1219
 
1220
- #: includes/main-query.php:188
1221
  #, php-format
1222
  msgid ""
1223
  "Powered by <a href=\"%s\" rel=\"nofollow\" style=\"float:none\">Contextual "
@@ -1236,6 +1236,10 @@ msgstr ""
1236
  msgid "filter argument has been deprecated"
1237
  msgstr ""
1238
 
 
 
 
 
1239
  #: includes/modules/class-crp-widget.php:31
1240
  msgid "Display Related Posts"
1241
  msgstr ""
3
  msgstr ""
4
  "Project-Id-Version: Contextual Related Posts\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2021-02-27 19:43+0000\n"
7
  "PO-Revision-Date: \n"
8
  "Last-Translator: Ajay D'Souza\n"
9
  "Language-Team: WebberZone\n"
14
  "X-Poedit-KeywordsList: __;_e;_c;__ngettext;esc_html__;esc_html_e;esc_attr__;"
15
  "esc_attr_e\n"
16
  "X-Poedit-Basepath: ..\n"
17
+ "X-Generator: Poedit 2.4.2\n"
18
  "X-Poedit-SourceCharset: UTF-8\n"
19
  "X-Poedit-SearchPath-0: .\n"
20
 
1217
  msgid "Follow me"
1218
  msgstr ""
1219
 
1220
+ #: includes/main-query.php:190
1221
  #, php-format
1222
  msgid ""
1223
  "Powered by <a href=\"%s\" rel=\"nofollow\" style=\"float:none\">Contextual "
1236
  msgid "filter argument has been deprecated"
1237
  msgstr ""
1238
 
1239
+ #: includes/modules/cache.php:25
1240
+ msgid "Cache has been cleared"
1241
+ msgstr ""
1242
+
1243
  #: includes/modules/class-crp-widget.php:31
1244
  msgid "Display Related Posts"
1245
  msgstr ""
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Tags: related posts, related, related articles, contextual related posts, similar posts, related posts widget
3
  Contributors: webberzone, Ajay
4
  Donate link: https://ajaydsouza.com/donate/
5
- Stable tag: 3.0.5
6
  Requires at least: 5.0
7
- Tested up to: 5.6
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
 
@@ -174,12 +174,23 @@ You can insert the related posts anywhere in your post using the `[crp]` shortco
174
 
175
  == Changelog ==
176
 
177
- = 3.0.5 =
178
 
179
  Release post: [https://webberzone.com/blog/contextual-related-posts-v3-0-0/](https://webberzone.com/blog/contextual-related-posts-v3-0-0/)
180
 
 
 
 
 
181
  * Bug fix:
182
- * Certain posts would trigger a "SHOW TABLES LIKE" error
 
 
 
 
 
 
 
183
  * Forced `.crp_related figure` margin to 0
184
 
185
  = 3.0.4 =
@@ -241,5 +252,5 @@ For the changelog of earlier versions, please refer to the separate changelog.tx
241
 
242
  == Upgrade Notice ==
243
 
244
- = 3.0.5 =
245
  Bug fixes. Please read the release post on https://webberzone.com
2
  Tags: related posts, related, related articles, contextual related posts, similar posts, related posts widget
3
  Contributors: webberzone, Ajay
4
  Donate link: https://ajaydsouza.com/donate/
5
+ Stable tag: 3.0.6
6
  Requires at least: 5.0
7
+ Tested up to: 5.7
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
 
174
 
175
  == Changelog ==
176
 
177
+ = 3.0.6 =
178
 
179
  Release post: [https://webberzone.com/blog/contextual-related-posts-v3-0-0/](https://webberzone.com/blog/contextual-related-posts-v3-0-0/)
180
 
181
+ * Enhancement:
182
+ * Defining `CRP_CACHE_TIME` to `false` will disable expiry
183
+ * Introduced wpml-config.xml file. Title and Custom text for blank output can now be translated with Polylang (and potentially WPML)
184
+
185
  * Bug fix:
186
+ * Exclude on categories did not work
187
+ * Posts would trigger a "SHOW FULL COLUMNS FROM" error if they had ' from' in the title
188
+ * Manual posts did not work properly - all post types and all posts are properly fetched now
189
+
190
+ = 3.0.5 =
191
+
192
+ * Bug fix:
193
+ * Certain posts would trigger a "SHOW FULL COLUMNS FROM" error
194
  * Forced `.crp_related figure` margin to 0
195
 
196
  = 3.0.4 =
252
 
253
  == Upgrade Notice ==
254
 
255
+ = 3.0.6 =
256
  Bug fixes. Please read the release post on https://webberzone.com
wpml-config.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <wpml-config>
2
+ <admin-texts>
3
+ <key name="crp_settings">
4
+ <key name="title" />
5
+ <key name="blank_output_text" />
6
+ </key>
7
+ </admin-texts>
8
+ </wpml-config>