WP External Links (nofollow new tab seo) - Version 0.11

Version Description

  • JavaScript uses window.open() (tested in FireFox Opera, Safari, Chrome and IE6+)
  • Also possible to open all external links in the same new window
  • Some layout changes on the Admin Options Page
Download this release

Release Info

Developer freelancephp
Plugin Icon 128x128 WP External Links (nofollow new tab seo)
Version 0.11
Comparing to
See all releases

Code changes from version 0.10 to 0.11

Files changed (4) hide show
  1. js/external-links.js +56 -27
  2. readme.txt +8 -5
  3. screenshot-1.png +0 -0
  4. wp-external-links.php +38 -19
js/external-links.js CHANGED
@@ -1,31 +1,60 @@
1
- // New Window Links Plugin
2
- function setExternalLinks() {
3
- var links = document.getElementsByTagName( 'a' ),
4
- glob = window.globNewWindowLinks || {};
5
-
6
- for ( var i = 0; i < links.length; i++ ){
7
- var a = links[ i ],
8
- href = a.href ? a.href.toLowerCase() : '',
9
- rel = a.rel ? a.rel.toLowerCase() : '';
10
-
11
- if ( a.href && ( rel.indexOf( 'external' ) > -1
12
- || ( href.indexOf( glob.baseUrl ) === -1 &&
13
- ( href.substr( 0, 7 ) == 'http://'
14
- || href.substr( 0, 8 ) == 'https://'
15
- || href.substr( 0, 6 ) == 'ftp://' ) ) ) ) {
16
-
17
- // set target blank
18
- a.target = '_blank';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  }
20
  }
21
- }
22
 
23
- if ( typeof jQuery == 'undefined' ) {
24
- window.onload = function() {
25
- setExternalLinks();
 
 
 
26
  }
27
- } else {
28
- jQuery(function(){
29
- setExternalLinks();
30
- });
31
- }
1
+ // WP External Links Plugin
2
+ (function( w, $ ){
3
+
4
+ var addEvt = function ( el, evt, fn ) {
5
+ if ( $ ) {
6
+ // jQuery method
7
+ $( el ).bind( evt, fn );
8
+ } else if ( el.attachEvent ) {
9
+ // IE method
10
+ el.attachEvent( 'on'+ evt, fn );
11
+ } else if ( el.addEventListener ) {
12
+ // Standard JS method
13
+ el.addEventListener( evt, fn, false );
14
+ }
15
+ },
16
+ init = function () {
17
+ setExtLinks();
18
+ };
19
+
20
+ function setExtLinks() {
21
+ var links = w.document.getElementsByTagName( 'a' );
22
+
23
+ // check each <a> element
24
+ for ( var i = 0; i < links.length; i++ ){
25
+ var a = links[ i ],
26
+ href = a.href ? a.href.toLowerCase() : '',
27
+ rel = a.rel ? a.rel.toLowerCase() : '';
28
+
29
+ if ( a.href && ( rel.indexOf( 'external' ) > -1
30
+ || ( ( href.indexOf( gExtLinks.baseUrl ) === -1 ) &&
31
+ ( href.substr( 0, 7 ) == 'http://'
32
+ || href.substr( 0, 8 ) == 'https://'
33
+ || href.substr( 0, 6 ) == 'ftp://' ) ) ) ) {
34
+
35
+ // click event
36
+ addEvt( a, 'click', function( a ){
37
+ return function( e ){
38
+ // open link in a new window
39
+ var n = w.open( a.href, gExtLinks.target );
40
+ n.focus();
41
+
42
+ // prevent default
43
+ e.returnValue = false;
44
+ if ( e.preventDefault )
45
+ e.preventDefault();
46
+ }
47
+ }( a ));
48
+ }
49
  }
50
  }
 
51
 
52
+ if ( $ ) {
53
+ // jQuery method
54
+ $( init );
55
+ } else {
56
+ // when jQuery is not available
57
+ addEvt( w, 'load', init );
58
  }
59
+
60
+ })( window, typeof jQuery == 'undefined' ? null : jQuery );
 
 
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: freelancephp
3
  Tags: links, external, new window, icon, target, _blank, _new, rel, nofollow, javascript, xhtml strict
4
  Requires at least: 2.7.0
5
  Tested up to: 3.1.0
6
- Stable tag: 0.10
7
 
8
  Manage the external links on your site: opening in a new window, set link icon, set "external", set "nofollow", set css-class.
9
 
@@ -17,13 +17,11 @@ Manage the external links on your site.
17
  * Choose an icon for external links
18
  * Add a css Class-name
19
  * Unobtrusive JavaScript method wich is XHTML Strict compliant
20
- * Supports PHP4.3+ and up to latest WP version
21
-
22
- Also see info at [FreelancePHP.net](http://www.freelancephp.net/wp-external-links-plugin)
23
 
24
  == Installation ==
25
 
26
- 1. Upload `new-window-links.zip` to the `/wp-content/plugins/` directory or add the plugin with 'Add Plugins' in the admin menu
27
  1. Be sure the plugin is activated in the Plugin-list
28
 
29
  == Frequently Asked Questions ==
@@ -37,6 +35,11 @@ Also see info at [FreelancePHP.net](http://www.freelancephp.net/wp-external-link
37
 
38
  == Changelog ==
39
 
 
 
 
 
 
40
  = 0.10 =
41
  * Features: opening in a new window, set link icon, set "external", set "nofollow", set css-class
42
  * Replaces external links by clean XHTML <a> tags
3
  Tags: links, external, new window, icon, target, _blank, _new, rel, nofollow, javascript, xhtml strict
4
  Requires at least: 2.7.0
5
  Tested up to: 3.1.0
6
+ Stable tag: 0.11
7
 
8
  Manage the external links on your site: opening in a new window, set link icon, set "external", set "nofollow", set css-class.
9
 
17
  * Choose an icon for external links
18
  * Add a css Class-name
19
  * Unobtrusive JavaScript method wich is XHTML Strict compliant
20
+ * Supports PHP4.3+ and up to latest WP versionMore info at [FreelancePHP.net](http://www.freelancephp.net/wp-external-links-plugin)
 
 
21
 
22
  == Installation ==
23
 
24
+ 1. Upload `wp-external-links.zip` to the `/wp-content/plugins/` directory or add the plugin with 'Add Plugins' in the admin menu
25
  1. Be sure the plugin is activated in the Plugin-list
26
 
27
  == Frequently Asked Questions ==
35
 
36
  == Changelog ==
37
 
38
+ = 0.11 =
39
+ * JavaScript uses window.open() (tested in FireFox Opera, Safari, Chrome and IE6+)
40
+ * Also possible to open all external links in the same new window
41
+ * Some layout changes on the Admin Options Page
42
+
43
  = 0.10 =
44
  * Features: opening in a new window, set link icon, set "external", set "nofollow", set css-class
45
  * Replaces external links by clean XHTML <a> tags
screenshot-1.png CHANGED
Binary file
wp-external-links.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: WP External Links
4
  Plugin URI: http://www.freelancephp.net/
5
  Description: Manage the external links on your site: opening in a new window, set link icon, set "external", set "nofollow", set css-class.
6
  Author: Victor Villaverde Laan
7
- Version: 0.10
8
  Author URI: http://www.freelancephp.net
9
  License: Dual licensed under the MIT and GPL licenses
10
  */
@@ -30,7 +30,7 @@ class WP_External_Links {
30
  * @var array
31
  */
32
  var $options = array(
33
- 'target_blank' => 1,
34
  'external' => TRUE,
35
  'nofollow' => TRUE,
36
  'icon' => 1,
@@ -96,8 +96,8 @@ class WP_External_Links {
96
  add_action( 'wp_head', array( $this, 'wp_head' ) );
97
 
98
  // set js file
99
- if ( $this->options[ 'target_blank' ] == 2 ) {
100
- wp_enqueue_script( 'external-links', plugins_url( 'js/external-links.js', __FILE__ ), array( 'jquery' ) );
101
  }
102
  }
103
  }
@@ -107,13 +107,13 @@ class WP_External_Links {
107
  */
108
  function wp_head() {
109
  ?>
110
- <?php if ( $this->options[ 'target_blank' ] == 2 ): ?>
111
  <!-- JS External Links Plugin -->
112
  <script language="javascript">
113
  /* <![CDATA[ */
114
- var globNewWindowLinks = {
115
  baseUrl: '<?php echo get_bloginfo( 'url' ) ?>',
116
- class_name: '<?php echo $this->options[ 'class_name' ] ?>'
117
  };
118
  /* ]]> */
119
  </script>
@@ -174,7 +174,7 @@ var globNewWindowLinks = {
174
  }
175
 
176
  // set target="_blank"
177
- if ( $this->options[ 'target_blank' ] == 1 )
178
  $attrs[ 'target' ] = '_blank';
179
  }
180
 
@@ -212,7 +212,7 @@ var globNewWindowLinks = {
212
  ?>
213
  <div class="wrap">
214
  <div class="icon32" id="icon-options-custom" style="background:url( <?php echo plugins_url( 'images/icon.png', __FILE__ ) ?> ) no-repeat 50% 50%"><br></div>
215
- <h2>External Links</h2>
216
 
217
  <form method="post" action="options.php">
218
  <?php
@@ -225,19 +225,27 @@ var globNewWindowLinks = {
225
  <div style="margin:0 5px;">
226
  <div class="postbox">
227
  <div class="handlediv" title="<?php _e( 'Click to toggle' ) ?>"><br/></div>
228
- <h3 class="hndle"><?php _e( 'Settings' ) ?></h3>
229
  <div class="inside">
230
  <fieldset class="options">
231
- <h4><?php _e( 'External links', $this->domain ) ?></h4>
232
  <table class="form-table">
233
  <tr>
234
  <th><?php _e( 'Open in new window', $this->domain ) ?></th>
235
- <td><label><input type="radio" name="<?php echo $this->options_name ?>[target_blank]" value="0" <?php checked('0', (int) $options['target_blank']); ?> />
236
- <span><?php _e( 'No, open external links in same window', $this->domain ) ?></span></label>
237
- <br/><label><input type="radio" name="<?php echo $this->options_name ?>[target_blank]" value="1" <?php checked('1', (int) $options['target_blank']); ?> />
238
- <span><?php _e( 'Yes, add <code>target="_blank"</code> to external links', $this->domain ) ?></span></label>
239
- <br/><label><input type="radio" name="<?php echo $this->options_name ?>[target_blank]" value="2" <?php checked('2', (int) $options['target_blank']); ?> />
240
- <span><?php _e( 'Yes, by using JavaScript (unobtrusive and XHTML Strict compliant)', $this->domain ) ?></span></label>
 
 
 
 
 
 
 
 
 
241
  </td>
242
  </tr>
243
  <tr>
@@ -253,8 +261,19 @@ var globNewWindowLinks = {
253
  </td>
254
  </tr>
255
  </table>
 
 
 
 
 
 
 
256
 
257
- <h4><?php _e( 'Styling', $this->domain ) ?></h4>
 
 
 
 
258
  <table class="form-table">
259
  <tr>
260
  <th><?php _e( 'Classname', $this->domain ) ?></th>
@@ -340,7 +359,7 @@ var globNewWindowLinks = {
340
 
341
  if ( ! empty( $saved_options ) ) {
342
  // set saved option values
343
- $this->options['target_blank'] = $saved_options['target_blank'];
344
  $this->options['external'] = ! empty( $saved_options['external'] );
345
  $this->options['nofollow'] = ! empty( $saved_options['nofollow'] );
346
  $this->options['icon'] = $saved_options['icon'];
4
  Plugin URI: http://www.freelancephp.net/
5
  Description: Manage the external links on your site: opening in a new window, set link icon, set "external", set "nofollow", set css-class.
6
  Author: Victor Villaverde Laan
7
+ Version: 0.11
8
  Author URI: http://www.freelancephp.net
9
  License: Dual licensed under the MIT and GPL licenses
10
  */
30
  * @var array
31
  */
32
  var $options = array(
33
+ 'new_window' => 1,
34
  'external' => TRUE,
35
  'nofollow' => TRUE,
36
  'icon' => 1,
96
  add_action( 'wp_head', array( $this, 'wp_head' ) );
97
 
98
  // set js file
99
+ if ( $this->options[ 'new_window' ] >= 4 ) {
100
+ wp_enqueue_script( 'external-links', plugins_url( 'js/external-links.js', __FILE__ ), array( 'jquery' ), '0.11' );
101
  }
102
  }
103
  }
107
  */
108
  function wp_head() {
109
  ?>
110
+ <?php if ( $this->options[ 'new_window' ] >= 4 ): ?>
111
  <!-- JS External Links Plugin -->
112
  <script language="javascript">
113
  /* <![CDATA[ */
114
+ var gExtLinks = {
115
  baseUrl: '<?php echo get_bloginfo( 'url' ) ?>',
116
+ target: '<?php echo ( $this->options[ 'new_window' ] == 5 ) ? '_new' : '_blank' ?>'
117
  };
118
  /* ]]> */
119
  </script>
174
  }
175
 
176
  // set target="_blank"
177
+ if ( $this->options[ 'new_window' ] == 1 )
178
  $attrs[ 'target' ] = '_blank';
179
  }
180
 
212
  ?>
213
  <div class="wrap">
214
  <div class="icon32" id="icon-options-custom" style="background:url( <?php echo plugins_url( 'images/icon.png', __FILE__ ) ?> ) no-repeat 50% 50%"><br></div>
215
+ <h2><?php _e( 'External Links Settings' ) ?></h2>
216
 
217
  <form method="post" action="options.php">
218
  <?php
225
  <div style="margin:0 5px;">
226
  <div class="postbox">
227
  <div class="handlediv" title="<?php _e( 'Click to toggle' ) ?>"><br/></div>
228
+ <h3 class="hndle"><?php _e( 'General Settings', $this->domain ) ?></h3>
229
  <div class="inside">
230
  <fieldset class="options">
 
231
  <table class="form-table">
232
  <tr>
233
  <th><?php _e( 'Open in new window', $this->domain ) ?></th>
234
+ <td><label><input type="radio" name="<?php echo $this->options_name ?>[new_window]" value="1" <?php checked('1', (int) $options['new_window']); ?> />
235
+ <span><?php _e( '1) No, open external links in active window', $this->domain ) ?></span></label>
236
+ <br/>
237
+ <br/><label><input type="radio" name="<?php echo $this->options_name ?>[new_window]" value="2" <?php checked('2', (int) $options['new_window']); ?> />
238
+ <span><?php _e( '2) Yes, add <code>target="_blank"</code> to external links (every external link is loaded in a new window)', $this->domain ) ?></span></label>
239
+ <br/><label><input type="radio" name="<?php echo $this->options_name ?>[new_window]" value="3" <?php checked('3', (int) $options['new_window']); ?> />
240
+ <span><?php _e( '3) Yes, add <code>target="_new"</code> to external links (all external links will be loaded in the same new window)', $this->domain ) ?></span></label>
241
+ <br/>
242
+ <br/><label><input type="radio" name="<?php echo $this->options_name ?>[new_window]" value="4" <?php checked('4', (int) $options['new_window']); ?> />
243
+ <span><?php _e( '4) Yes, using JavaScript for opening every external link in a new window', $this->domain ) ?></span></label>
244
+ <br/><label><input type="radio" name="<?php echo $this->options_name ?>[new_window]" value="5" <?php checked('5', (int) $options['new_window']); ?> />
245
+ <span><?php _e( '5) Yes, using JavaScript for opening all external links in the same new window', $this->domain ) ?></span></label>
246
+ <br />
247
+ <br />
248
+ <p><span class="description"><?php _e( 'Note: method 2 and 3 are compliant with XHTML Transitional. The other methods are also XHTML Strict compliant.' ) ?></span></p>
249
  </td>
250
  </tr>
251
  <tr>
261
  </td>
262
  </tr>
263
  </table>
264
+ </fieldset>
265
+ <p class="description"><?php _e( 'This plugin automatically cleans up the code of <code>&lt;a&gt;</code> tags and makes them XHTML valid' ) ?></p>
266
+ <p class="submit">
267
+ <input class="button-primary" type="submit" value="<?php _e( 'Save Changes' ) ?>" />
268
+ </p>
269
+ </div>
270
+ </div>
271
 
272
+ <div class="postbox">
273
+ <div class="handlediv" title="<?php _e( 'Click to toggle' ) ?>"><br/></div>
274
+ <h3 class="hndle"><?php _e( 'Style Settings', $this->domain ) ?></h3>
275
+ <div class="inside">
276
+ <fieldset class="options">
277
  <table class="form-table">
278
  <tr>
279
  <th><?php _e( 'Classname', $this->domain ) ?></th>
359
 
360
  if ( ! empty( $saved_options ) ) {
361
  // set saved option values
362
+ $this->options['new_window'] = $saved_options['new_window'];
363
  $this->options['external'] = ! empty( $saved_options['external'] );
364
  $this->options['nofollow'] = ! empty( $saved_options['nofollow'] );
365
  $this->options['icon'] = $saved_options['icon'];