Page Links To - Version 2.9.3

Version Description

  • Only rely on an internal cache for wp_list_pages() processing, and time-limit the cache.
  • Work around some weird edge cases
Download this release

Release Info

Developer markjaquith
Plugin Icon wp plugin Page Links To
Version 2.9.3
Comparing to
See all releases

Code changes from version 2.9.2 to 2.9.3

Files changed (2) hide show
  1. page-links-to.php +30 -25
  2. readme.txt +6 -2
page-links-to.php CHANGED
@@ -3,7 +3,7 @@
3
Plugin Name: Page Links To
4
Plugin URI: http://txfx.net/wordpress-plugins/page-links-to/
5
Description: Allows you to point WordPress pages or posts to a URL of your choosing. Good for setting up navigational links to non-WP sections of your site or to off-site resources.
6
- Version: 2.9.2
7
Author: Mark Jaquith
8
Author URI: http://coveredwebservices.com/
9
Text Domain: page-links-to
@@ -130,6 +130,19 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
130
return $wpdb->get_results( $wpdb->prepare( "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = %s", $key ) );
131
}
132
133
/**
134
* Returns all links for the current site
135
*
@@ -144,7 +157,7 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
144
$links[ intval( $link->post_id ) ] = $link->meta_value;
145
}
146
}
147
- set_transient( self::LINKS_CACHE_KEY, $links );
148
}
149
return $links;
150
}
@@ -156,11 +169,7 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
156
* @return mixed either a URL or false
157
*/
158
function get_link( $post_id ) {
159
- $links = $this->get_links();
160
- if ( isset( $links[$post_id] ) )
161
- return $links[$post_id];
162
- else
163
- return false;
164
}
165
166
/**
@@ -177,7 +186,7 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
177
$targets[ intval( $target->post_id ) ] = true;
178
}
179
}
180
- set_transient( self::TARGETS_CACHE_KEY, $targets );
181
}
182
return $targets;
183
}
@@ -189,11 +198,7 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
189
* @return bool whether it should open in a new tab
190
*/
191
function get_target( $post_id ) {
192
- $targets = $this->get_targets();
193
- if ( isset( $targets[$post_id] ) )
194
- return true;
195
- else
196
- return false;
197
}
198
199
/**
@@ -220,7 +225,7 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
220
echo '<p>';
221
wp_nonce_field( 'cws_plt_' . $post->ID, '_cws_plt_nonce', false, true );
222
echo '</p>';
223
- $url = get_post_meta( $post->ID, self::LINK_META_KEY, true);
224
if ( ! $url ) {
225
$linked = false;
226
$url = 'http://';
@@ -233,7 +238,7 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
233
<p><label><input type="radio" id="cws-links-to-choose-custom" name="cws_links_to_choice" value="custom" <?php checked( $linked ); ?> /> <?php _e( 'A custom URL', 'page-links-to' ); ?></label></p>
234
<div style="webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left: 30px;" id="cws-links-to-custom-section" class="<?php echo ! $linked ? 'hide-if-js' : ''; ?>">
235
<p><input name="cws_links_to" type="text" style="width:75%" id="cws-links-to" value="<?php echo esc_attr( $url ); ?>" /></p>
236
- <p><label for="cws-links-to-new-tab"><input type="checkbox" name="cws_links_to_new_tab" id="cws-links-to-new-tab" value="_blank" <?php checked( '_blank', get_post_meta( $post->ID, self::TARGET_META_KEY, true ) ); ?>> <?php _e( 'Open this link in a new tab', 'page-links-to' ); ?></label></p>
237
</div>
238
<script src="<?php echo trailingslashit( plugin_dir_url( self::FILE ) ) . 'js/page-links-to.js?v=4'; ?>"></script>
239
<?php
@@ -438,29 +443,30 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
438
*/
439
function wp_list_pages( $pages ) {
440
$highlight = false;
441
$links = $this->get_links();
442
443
if ( ! $links )
444
return $pages;
445
446
$this_url = ( is_ssl() ? 'https' : 'http' ) . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
447
- $targets = array();
448
449
foreach ( (array) $links as $id => $page ) {
450
- if ( $this->get_target( $id ) )
451
- $targets[$page] = '_blank';
452
-
453
if ( str_replace( 'http://www.', 'http://', $this_url ) === str_replace( 'http://www.', 'http://', $page ) || ( is_home() && str_replace( 'http://www.', 'http://', trailingslashit( get_bloginfo( 'url' ) ) ) === str_replace( 'http://www.', 'http://', trailingslashit( $page ) ) ) ) {
454
$highlight = true;
455
$current_page = esc_url( $page );
456
}
457
}
458
459
- if ( count( $targets ) ) {
460
- foreach ( $targets as $p => $t ) {
461
$p = esc_url( $p );
462
- $t = esc_attr( $t );
463
- $pages = str_replace( '<a href="' . $p . '"', '<a href="' . $p . '" target="' . $t . '"', $pages );
464
}
465
}
466
@@ -492,9 +498,8 @@ class CWS_PageLinksTo extends WP_Stack_Plugin {
492
*/
493
function load_post() {
494
if ( isset( $_GET['post'] ) ) {
495
- if ( get_post_meta( absint( $_GET['post'] ), self::LINK_META_KEY, true ) ) {
496
$this->hook( 'admin_notices', 'notify_of_external_link' );
497
- }
498
}
499
}
500
3
Plugin Name: Page Links To
4
Plugin URI: http://txfx.net/wordpress-plugins/page-links-to/
5
Description: Allows you to point WordPress pages or posts to a URL of your choosing. Good for setting up navigational links to non-WP sections of your site or to off-site resources.
6
+ Version: 2.9.3
7
Author: Mark Jaquith
8
Author URI: http://coveredwebservices.com/
9
Text Domain: page-links-to
130
return $wpdb->get_results( $wpdb->prepare( "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = %s", $key ) );
131
}
132
133
+ /**
134
+ * Returns a single piece of post meta
135
+ * @param integer $post_id a post ID
136
+ * @param string $key a post meta key
137
+ * @return string|false the post meta, or false, if it doesn't exist
138
+ */
139
+ function get_post_meta( $post_id, $key ) {
140
+ $meta = get_post_meta( absint( $post_id ), $key, true );
141
+ if ( '' === $meta )
142
+ return false;
143
+ return $meta;
144
+ }
145
+
146
/**
147
* Returns all links for the current site
148
*
157
$links[ intval( $link->post_id ) ] = $link->meta_value;
158
}
159
}
160
+ set_transient( self::LINKS_CACHE_KEY, $links, 10 * 60 );
161
}
162
return $links;
163
}
169
* @return mixed either a URL or false
170
*/
171
function get_link( $post_id ) {
172
+ return $this->get_post_meta( $post_id, self::LINK_META_KEY );
173
}
174
175
/**
186
$targets[ intval( $target->post_id ) ] = true;
187
}
188
}
189
+ set_transient( self::TARGETS_CACHE_KEY, $targets, 10 * 60 );
190
}
191
return $targets;
192
}
198
* @return bool whether it should open in a new tab
199
*/
200
function get_target( $post_id ) {
201
+ return (bool) $this->get_post_meta( $post_id, self::TARGET_META_KEY );
202
}
203
204
/**
225
echo '<p>';
226
wp_nonce_field( 'cws_plt_' . $post->ID, '_cws_plt_nonce', false, true );
227
echo '</p>';
228
+ $url = $this->get_link( $post->ID );
229
if ( ! $url ) {
230
$linked = false;
231
$url = 'http://';
238
<p><label><input type="radio" id="cws-links-to-choose-custom" name="cws_links_to_choice" value="custom" <?php checked( $linked ); ?> /> <?php _e( 'A custom URL', 'page-links-to' ); ?></label></p>
239
<div style="webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left: 30px;" id="cws-links-to-custom-section" class="<?php echo ! $linked ? 'hide-if-js' : ''; ?>">
240
<p><input name="cws_links_to" type="text" style="width:75%" id="cws-links-to" value="<?php echo esc_attr( $url ); ?>" /></p>
241
+ <p><label for="cws-links-to-new-tab"><input type="checkbox" name="cws_links_to_new_tab" id="cws-links-to-new-tab" value="_blank" <?php checked( (bool) $this->get_target( $post->ID ) ); ?>> <?php _e( 'Open this link in a new tab', 'page-links-to' ); ?></label></p>
242
</div>
243
<script src="<?php echo trailingslashit( plugin_dir_url( self::FILE ) ) . 'js/page-links-to.js?v=4'; ?>"></script>
244
<?php
443
*/
444
function wp_list_pages( $pages ) {
445
$highlight = false;
446
+
447
+ // We use the "fetch all" versions here, because the pages might not be queried here
448
$links = $this->get_links();
449
+ $targets = $this->get_targets();
450
+ $targets_by_url = array();
451
+ foreach( array_keys( $targets ) as $targeted_id )
452
+ $targets_by_url[$links[$targeted_id]] = true;
453
454
if ( ! $links )
455
return $pages;
456
457
$this_url = ( is_ssl() ? 'https' : 'http' ) . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
458
459
foreach ( (array) $links as $id => $page ) {
460
if ( str_replace( 'http://www.', 'http://', $this_url ) === str_replace( 'http://www.', 'http://', $page ) || ( is_home() && str_replace( 'http://www.', 'http://', trailingslashit( get_bloginfo( 'url' ) ) ) === str_replace( 'http://www.', 'http://', trailingslashit( $page ) ) ) ) {
461
$highlight = true;
462
$current_page = esc_url( $page );
463
}
464
}
465
466
+ if ( count( $targets_by_url ) ) {
467
+ foreach ( array_keys( $targets_by_url ) as $p ) {
468
$p = esc_url( $p );
469
+ $pages = str_replace( '<a href="' . $p . '"', '<a href="' . $p . '" target="_blank"', $pages );
470
}
471
}
472
498
*/
499
function load_post() {
500
if ( isset( $_GET['post'] ) ) {
501
+ if ( $this->get_link( (int) $_GET['post'] ) )
502
$this->hook( 'admin_notices', 'notify_of_external_link' );
503
}
504
}
505
readme.txt CHANGED
@@ -7,7 +7,7 @@ Donate link: http://txfx.net/wordpress-plugins/donate
7
Tags: page, redirect, link, external link, repoint
8
Requires at least: 3.4
9
Tested up to: 3.6
10
- Stable tag: 2.9.1
11
12
Lets you make a WordPress page (or other content type) link to an external URL of your choosing, instead of its WordPress URL.
13
@@ -59,7 +59,11 @@ Yes. Linking to `/my-photos.php` is a good idea, as it'll still work if you move
59
60
== Changelog ==
61
62
- = 2.9.1 =
63
* Restore WordPress 3.4.x functionality.
64
65
= 2.9.1 =
7
Tags: page, redirect, link, external link, repoint
8
Requires at least: 3.4
9
Tested up to: 3.6
10
+ Stable tag: 2.9.3
11
12
Lets you make a WordPress page (or other content type) link to an external URL of your choosing, instead of its WordPress URL.
13
59
60
== Changelog ==
61
62
+ = 2.9.3 =
63
+ * Only rely on an internal cache for `wp_list_pages()` processing, and time-limit the cache.
64
+ * Work around some weird edge cases
65
+
66
+ = 2.9.2 =
67
* Restore WordPress 3.4.x functionality.
68
69
= 2.9.1 =