Version Description
- remove functions ppr_linktotarget, ppr_linktonorel, ppr_redirectto and ppr_linktometa.(12/10/2010)
- re-write functions to consolidate queries. (12/10/2010)
- added new filters for New menu structure to filter wp_nav_menu menus as well as old wp_page_menus functions. (12/10/2010)
- cleaned up new window and nofollow code to work more consistently. (12/10/2010)
Download this release
Release Info
Developer | prophecy2040 |
Plugin | Quick Page/Post Redirect Plugin |
Version | 3.2 |
Comparing to | |
See all releases |
Code changes from version 3.1 to 3.2
- page_post_redirect_plugin.php +168 -166
- readme.txt +18 -13
page_post_redirect_plugin.php
CHANGED
@@ -2,12 +2,17 @@
|
|
2 |
/*
|
3 |
Plugin Name: Quick Page/Post Redirect
|
4 |
Plugin URI: http://fischercreativemedia.com/wordpress-plugins/quick-pagepost-redirct-plugin/
|
5 |
-
Description: Redirect Pages or Posts to another location quickly. Adds a redirect box to the page or post edit page where you can specify the redirect Location and type which can be to another WordPress page/post or an external URL. Additional 301 Redirects can also be added for non-existant posts or pages - helpful for sites converted to WordPress.
|
6 |
Author: Don Fischer
|
7 |
Author URI: http://www.fischercreativemedia.com/
|
8 |
-
|
|
|
9 |
|
10 |
Version info:
|
|
|
|
|
|
|
|
|
11 |
3.1 - Re-issue of 2.1 for immediate fix of issue with the 3.0 version.(6/21/2010)
|
12 |
3.0 - Enhance Filter to reduce number of DB calls. (06/20/10)
|
13 |
2.1 - Fix Bug - Open in New Window would not work unless Show Link URL was also selected. (3/12/2010)
|
@@ -49,9 +54,13 @@ Version info:
|
|
49 |
You should have received a copy of the GNU General Public License
|
50 |
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
51 |
*/
|
|
|
|
|
|
|
|
|
52 |
|
53 |
//=======================================
|
54 |
-
// Redirect Class (for non
|
55 |
// Original Simple 301 Redirects Class created by Scott Nelle (http://www.scottnelle.com/)
|
56 |
//=======================================
|
57 |
if (!class_exists("quick_page_post_redirects")) {
|
@@ -95,6 +104,7 @@ Version info:
|
|
95 |
</p>
|
96 |
</form>
|
97 |
</div>
|
|
|
98 |
<?php
|
99 |
} // end of function options_page
|
100 |
|
@@ -163,155 +173,149 @@ Version info:
|
|
163 |
// Call the 301 class (for non-existant 301 redirects)
|
164 |
$redirect_plugin = new quick_page_post_redirects();
|
165 |
|
166 |
-
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
//----------
|
168 |
add_action('admin_menu', 'add_edit_box_ppr');
|
169 |
add_action('save_post', 'ppr_save_postdata', 1, 2); // save the custom fields
|
170 |
-
//add_action('wp','ppr_do_redirect', 1, 2);
|
171 |
add_action('template_redirect','ppr_do_redirect', 1, 2);
|
172 |
add_action('init', 'ppr_init_metaclean', 1);
|
173 |
-
|
174 |
-
add_filter('page_link','ppr_filter_pages',20, 2 );
|
175 |
-
add_filter('post_link','ppr_filter_pages',20, 2 );
|
176 |
-
add_filter('wp_list_pages','ppr_fix_targetsandrels', 9);
|
177 |
-
|
178 |
if (isset($redirect_plugin)) {
|
179 |
add_action('init', array($redirect_plugin,'redirect'), 1); // add the redirect action, high priority
|
180 |
add_action('admin_menu', array($redirect_plugin,'create_menu')); // create the menu
|
181 |
if (isset($_POST['submit_301'])) {$redirect_plugin->save_redirects($_POST['quickppr_redirects']);} //if submitted, process the data
|
182 |
}
|
183 |
-
|
184 |
-
|
185 |
-
// Variables
|
186 |
-
//----------
|
187 |
-
global $wpdb;
|
188 |
-
global $wp_query;
|
189 |
|
190 |
// Functions
|
191 |
//----------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
// For WordPress < 2.8 function compatibility
|
193 |
if (!function_exists('esc_attr')) {
|
194 |
function esc_attr($attr){return attribute_escape( $attr );}
|
195 |
function esc_url($url){return clean_url( $url );}
|
196 |
}
|
197 |
|
198 |
-
// used to get the meta_value and ID of a post with specific meta_key.
|
199 |
-
function ppr_get_metavalfromkey($key) {
|
200 |
-
global $wpdb;
|
201 |
-
return $wpdb->get_results( $wpdb->prepare( "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key=%s and post_id in (SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_pprredirect_active')", $key ) );
|
202 |
-
}
|
203 |
-
|
204 |
//clean up the Custom Fields to make it prettier on the Edit Page
|
205 |
function ppr_init_metaclean() {
|
206 |
$thepprversion = get_option('ppr_version');
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
|
|
211 |
}else{
|
212 |
global $wpdb;
|
213 |
//want to make sure older version upgrading still
|
|
|
214 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_active' WHERE meta_key = 'pprredirect_active'" );
|
215 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_newwindow' WHERE meta_key = 'pprredirect_newwindow'" );
|
216 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_relnofollow' WHERE meta_key = 'pprredirect_relnofollow'" );
|
217 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_type' WHERE meta_key = 'pprredirect_type'" );
|
218 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_url' WHERE meta_key = 'pprredirect_url'" );
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
}
|
224 |
-
|
225 |
-
function ppr_redirectto() {//alternate redirect function - old version
|
226 |
-
global $wp_query;
|
227 |
-
if (!is_single()&&!is_page()){
|
228 |
-
return;
|
229 |
-
}
|
230 |
-
$link = get_post_meta($wp_query->post->ID, '_pprredirect_url', true);
|
231 |
-
if(!$link){
|
232 |
-
return;
|
233 |
}
|
234 |
-
$redirect_type = get_post_meta( $wp_query->post->ID, '_pprredirect_type', true );
|
235 |
-
$redirect_type = ( $redirect_type = '302' ) ? '302' : '301';
|
236 |
-
wp_redirect( $link, $redirect_type );
|
237 |
-
exit;
|
238 |
}
|
239 |
|
240 |
function ppr_filter_pages ($link, $post) {
|
241 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
if(isset($post->ID)){
|
243 |
$id = $post->ID;
|
244 |
}else{
|
245 |
$id = $post;
|
246 |
}
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
if(strpos($
|
251 |
-
$link = esc_url( $
|
252 |
}else{
|
253 |
-
$link = esc_url( get_bloginfo('url').'/'. $
|
254 |
}
|
255 |
}
|
256 |
}
|
|
|
257 |
return $link;
|
258 |
}
|
259 |
|
260 |
-
function ppr_linktometa() {
|
261 |
-
global $wpdb, $ppr_cache, $blog_id;
|
262 |
-
if(isset($ppr_cache[$blog_id])){
|
263 |
-
return $ppr_cache[$blog_id];
|
264 |
-
}else{
|
265 |
-
$links_to = ppr_get_metavalfromkey('_pprredirect_url');
|
266 |
-
if(count($links_to)>0){
|
267 |
-
foreach((array) $links_to as $link){
|
268 |
-
//if(get_post_meta($link->post_id,'_pprredirect_active',true)!=''){
|
269 |
-
$ppr_cache[$blog_id][$link->post_id] = $link->meta_value;
|
270 |
-
//}
|
271 |
-
}
|
272 |
-
return $ppr_cache[$blog_id];
|
273 |
-
}else{
|
274 |
-
$ppr_cache[$blog_id] = false;
|
275 |
-
return false;
|
276 |
-
}
|
277 |
-
}
|
278 |
-
}
|
279 |
-
|
280 |
-
function ppr_linktotarget () {
|
281 |
-
global $wpdb, $ppr_target, $blog_id;
|
282 |
-
if (!isset( $ppr_target[$blog_id])){
|
283 |
-
$links_to = ppr_get_metavalfromkey('_pprredirect_newwindow');
|
284 |
-
}else{
|
285 |
-
return $ppr_target[$blog_id];
|
286 |
-
}
|
287 |
-
if (!$links_to) {
|
288 |
-
$ppr_target[$blog_id] = false;
|
289 |
-
return false;
|
290 |
-
}
|
291 |
-
foreach ((array) $links_to as $link){
|
292 |
-
$ppr_target[$blog_id][$link->post_id] = $link->meta_value;
|
293 |
-
}
|
294 |
-
return $ppr_target[$blog_id];
|
295 |
-
}
|
296 |
-
|
297 |
-
function ppr_linktonorel () {
|
298 |
-
global $wpdb, $ppr_norel, $blog_id;
|
299 |
-
if (!isset($ppr_norel[$blog_id])){
|
300 |
-
$links_to = ppr_get_metavalfromkey('_pprredirect_relnofollow');
|
301 |
-
}else{
|
302 |
-
return $ppr_norel[$blog_id];
|
303 |
-
}
|
304 |
-
if (!$links_to) {
|
305 |
-
$ppr_norel[$blog_id] = false;
|
306 |
-
return false;
|
307 |
-
}
|
308 |
-
foreach((array) $links_to as $link){
|
309 |
-
$ppr_norel[$blog_id][$link->post_id] = $link->meta_value;
|
310 |
-
}
|
311 |
-
//print_r($ppr_norel[$blog_id]);
|
312 |
-
return $ppr_norel[$blog_id];
|
313 |
-
}
|
314 |
-
|
315 |
function addmetatohead_theme(){
|
316 |
global $ppr_url;
|
317 |
$meta_code = '<meta http-equiv="refresh" content="0; URL='.$ppr_url.'" />';
|
@@ -320,47 +324,62 @@ Version info:
|
|
320 |
}
|
321 |
|
322 |
function ppr_do_redirect(){
|
323 |
-
global $post,$wp_query,$
|
324 |
-
|
325 |
-
|
326 |
-
$
|
327 |
-
$
|
328 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
334 |
//metaredirect
|
335 |
add_action('wp_head', "addmetatohead_theme",1);
|
336 |
-
|
337 |
//check for http:// - as full url - then we can just redirect if it is //
|
338 |
-
if( strpos($
|
339 |
-
$offsite=$
|
340 |
-
header('Status: '.$
|
341 |
-
header('Location: '.$offsite, true, $
|
342 |
exit; //stop loading page
|
343 |
-
}elseif(strpos($
|
344 |
-
$offsite='http://'.$
|
345 |
-
header("Status: $
|
346 |
-
header("Location: $offsite", true, $
|
347 |
exit; //stop loading page
|
348 |
-
}elseif(is_numeric($
|
349 |
if($ppr_postpage=='page'){ //page
|
350 |
$onsite=get_bloginfo('url').'/?page_id='.$ppr_url;
|
351 |
-
header("Status: $
|
352 |
-
header("Location: $onsite", true, $
|
353 |
exit; //stop loading page
|
354 |
}else{ //post
|
355 |
-
$onsite=get_bloginfo('url').'/?p='.$
|
356 |
-
header("Status: $
|
357 |
-
header("Location: $onsite", true, $
|
358 |
exit; //stop loading page
|
359 |
}
|
360 |
//check permalink or local page redirect
|
361 |
}else{ // we assume they are using the permalink / page name??
|
362 |
-
$onsite=get_bloginfo('url'). $
|
363 |
-
header("Location: $onsite", true, $
|
364 |
exit; //stop loading page
|
365 |
}
|
366 |
|
@@ -426,12 +445,11 @@ Version info:
|
|
426 |
}
|
427 |
|
428 |
// When the post is saved, saves our custom data
|
429 |
-
function ppr_save_postdata($post_id, $post) {
|
430 |
|
|
|
431 |
if(isset($_REQUEST['pprredirect_noncename']) && (isset($_POST['pprredirect_active']) || isset($_POST['pprredirect_url']) || isset($_POST['pprredirect_type']) || isset($_POST['pprredirect_newwindow']) || isset($_POST['pprredirect_relnofollow']))):
|
432 |
// verify authorization
|
433 |
if(isset($_POST['pprredirect_noncename'])){
|
434 |
-
//if ( !wp_verify_nonce( $_POST['pprredirect_noncename'], plugin_basename(__FILE__) )) {
|
435 |
if ( !wp_verify_nonce( $_REQUEST['pprredirect_noncename'], 'pprredirect_noncename' )) {
|
436 |
return $post->ID;
|
437 |
}
|
@@ -478,54 +496,38 @@ Version info:
|
|
478 |
}
|
479 |
|
480 |
function ppr_fix_targetsandrels($pages) {
|
481 |
-
|
482 |
-
$
|
483 |
-
$
|
484 |
-
$
|
485 |
-
|
|
|
|
|
486 |
return $pages;
|
487 |
}
|
488 |
|
489 |
$this_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
490 |
-
$targets = array();
|
491 |
-
$norels = array();
|
492 |
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
}
|
497 |
-
if (isset( $ppr_norel[$id])){
|
498 |
-
$norels[$id] = $ppr_cache[$id];
|
499 |
-
}
|
500 |
-
}
|
501 |
-
|
502 |
-
if(count($norels)>=1) {
|
503 |
-
foreach($norels as $relid => $rel){
|
504 |
-
$validexp="/page-item-".$relid."\"><a(?:.*)rel=\"nofollow\"(?:.*?)>/i";
|
505 |
$found = preg_match_all($validexp, $pages, $matches);
|
506 |
-
//if(strpos($pages,'page-item-'.$relid.'">a href="'.$rel.'" rel="nofollow" ')>0) {
|
507 |
if($found!=0){
|
508 |
$pages = $pages; //do nothing 'cause it is already a rel=nofollow.
|
509 |
}else{
|
510 |
-
$pages = preg_replace('
|
511 |
-
//$pages = str_replace(' href="'.$rel.'"',' href="'.$rel.'" rel="nofollow" ', $pages); //add no follow.
|
512 |
}
|
513 |
}
|
514 |
}
|
515 |
|
516 |
-
if(count($
|
517 |
-
foreach($
|
518 |
-
$
|
519 |
-
$t = esc_url($t);
|
520 |
-
$validexp="/page-item-".$p."\"><a(?:.*)target=\"_blank\"(?:.*?)>/i";
|
521 |
$found = preg_match_all($validexp, $pages, $matches);
|
522 |
-
//if(strpos($pages,' href="'.$t.'" target="'.$p.'" ')>0){
|
523 |
-
//$pages = $pages; //already has a target
|
524 |
if($found!=0){
|
525 |
$pages = $pages; //do nothing 'cause it is already a rel=nofollow.
|
526 |
}else{
|
527 |
-
$pages = preg_replace('
|
528 |
-
//$pages = str_replace(' href="'.$p.'" ',' href="'.$p.'" target="'.$t.'" ', $pages);
|
529 |
}
|
530 |
}
|
531 |
}
|
2 |
/*
|
3 |
Plugin Name: Quick Page/Post Redirect
|
4 |
Plugin URI: http://fischercreativemedia.com/wordpress-plugins/quick-pagepost-redirct-plugin/
|
5 |
+
Description: Redirect Pages or Posts to another page or post or external location quickly. Adds a redirect box to the page or post edit page where you can specify the redirect Location and type which can be to another WordPress page/post or an external URL. Additional 301 Redirects can also be added for non-existant posts or pages - helpful for sites converted to WordPress. Allows for redirects to open in a new window as well as giving you the ability to add the rel=nofollow to redirected links.
|
6 |
Author: Don Fischer
|
7 |
Author URI: http://www.fischercreativemedia.com/
|
8 |
+
Donate link: http://www.fischercreativemedia.com/wordpress-plugins/donate/
|
9 |
+
Version: 3.2
|
10 |
|
11 |
Version info:
|
12 |
+
3.2 - remove functions ppr_linktotarget, ppr_linktonorel, ppr_redirectto and ppr_linktometa.(12/10/2010)
|
13 |
+
- re-write functions to consolidate queries. (12/10/2010)
|
14 |
+
- added new filters for New menu structure to filter wp_nav_menu menus as well as old wp_page_menus functions. (12/10/2010)
|
15 |
+
- cleaned up new window and nofollow code to work more consistently. (12/10/2010)
|
16 |
3.1 - Re-issue of 2.1 for immediate fix of issue with the 3.0 version.(6/21/2010)
|
17 |
3.0 - Enhance Filter to reduce number of DB calls. (06/20/10)
|
18 |
2.1 - Fix Bug - Open in New Window would not work unless Show Link URL was also selected. (3/12/2010)
|
54 |
You should have received a copy of the GNU General Public License
|
55 |
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
56 |
*/
|
57 |
+
ini_set('display_errors', 0);
|
58 |
+
ini_set('log_errors', 1);
|
59 |
+
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
|
60 |
+
error_reporting( E_ALL & ~E_NOTICE );
|
61 |
|
62 |
//=======================================
|
63 |
+
// Redirect Class (for non page post redirects).
|
64 |
// Original Simple 301 Redirects Class created by Scott Nelle (http://www.scottnelle.com/)
|
65 |
//=======================================
|
66 |
if (!class_exists("quick_page_post_redirects")) {
|
104 |
</p>
|
105 |
</form>
|
106 |
</div>
|
107 |
+
|
108 |
<?php
|
109 |
} // end of function options_page
|
110 |
|
173 |
// Call the 301 class (for non-existant 301 redirects)
|
174 |
$redirect_plugin = new quick_page_post_redirects();
|
175 |
|
176 |
+
// Variables
|
177 |
+
//----------
|
178 |
+
global $wpdb;
|
179 |
+
global $wp_query;
|
180 |
+
global $ppr_nofollow;
|
181 |
+
global $ppr_newindow;
|
182 |
+
global $ppr_url;
|
183 |
+
global $ppr_url_rewrite;
|
184 |
+
global $ppr_type;
|
185 |
+
|
186 |
+
// Actions & Filters
|
187 |
//----------
|
188 |
add_action('admin_menu', 'add_edit_box_ppr');
|
189 |
add_action('save_post', 'ppr_save_postdata', 1, 2); // save the custom fields
|
|
|
190 |
add_action('template_redirect','ppr_do_redirect', 1, 2);
|
191 |
add_action('init', 'ppr_init_metaclean', 1);
|
192 |
+
add_action('wp','ppr_new_nav_menu');
|
|
|
|
|
|
|
|
|
193 |
if (isset($redirect_plugin)) {
|
194 |
add_action('init', array($redirect_plugin,'redirect'), 1); // add the redirect action, high priority
|
195 |
add_action('admin_menu', array($redirect_plugin,'create_menu')); // create the menu
|
196 |
if (isset($_POST['submit_301'])) {$redirect_plugin->save_redirects($_POST['quickppr_redirects']);} //if submitted, process the data
|
197 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
|
199 |
// Functions
|
200 |
//----------
|
201 |
+
function ppr_new_nav_menu($items){
|
202 |
+
global $ppr_nofollow;
|
203 |
+
global $ppr_newindow;
|
204 |
+
global $ppr_url;
|
205 |
+
global $ppr_url_rewrite;
|
206 |
+
global $ppr_type;
|
207 |
+
add_filter( 'wp_get_nav_menu_items','ppr_new_nav_menu_fix',1,1);
|
208 |
+
add_filter( 'wp_list_pages','ppr_fix_targetsandrels');
|
209 |
+
add_filter( 'page_link','ppr_filter_pages',20, 2 );
|
210 |
+
add_filter( 'post_link','ppr_filter_pages',20, 2 );
|
211 |
+
return $items;
|
212 |
+
}
|
213 |
+
|
214 |
+
function ppr_new_nav_menu_fix($ppr){
|
215 |
+
global $ppr_nofollow;
|
216 |
+
global $ppr_newindow;
|
217 |
+
global $ppr_url;
|
218 |
+
global $ppr_url_rewrite;
|
219 |
+
global $ppr_type;
|
220 |
+
global $wpdb;
|
221 |
+
$thefirstppr = array();
|
222 |
+
$select_tiems = $wpdb->get_results("SELECT post_id,meta_key,meta_value FROM $wpdb->postmeta WHERE (meta_key='_pprredirect_type' OR meta_key='_pprredirect_url' OR meta_key='_pprredirect_rewritelink' OR meta_key = '_pprredirect_active' OR meta_key='_pprredirect_newwindow' OR meta_key='_pprredirect_relnofollow') AND meta_value!='' ORDER BY post_id ASC;");
|
223 |
+
foreach($select_tiems as $pprs){
|
224 |
+
$thefirstppr[$pprs->post_id][$pprs->meta_key] = $pprs->meta_value;
|
225 |
+
$thefirstppr[$pprs->post_id]['post_id'] = $pprs->post_id;
|
226 |
+
}
|
227 |
+
foreach($thefirstppr as $ppitems){
|
228 |
+
if(isset($ppitems['_pprredirect_active']) && isset($ppitems['_pprredirect_newwindow'])){
|
229 |
+
$ppr_newindow[] = $ppitems['post_id'];
|
230 |
+
}
|
231 |
+
if(isset($ppitems['_pprredirect_active']) && isset($ppitems['_pprredirect_relnofollow'])){
|
232 |
+
$ppr_nofollow[] = $ppitems['post_id'];
|
233 |
+
}
|
234 |
+
if(isset($ppitems['_pprredirect_active']) && isset($ppitems['_pprredirect_rewritelink']) && isset($ppitems['_pprredirect_url'])){
|
235 |
+
$ppr_url_rewrite[] = $ppitems['post_id'];
|
236 |
+
$ppr_url[$ppitems['post_id']]['URL'] = $ppitems['_pprredirect_url'];
|
237 |
+
}
|
238 |
+
if(isset($ppitems['_pprredirect_active']) && isset($ppitems['_pprredirect_type'])){
|
239 |
+
$ppr_type[$ppitems['post_id']]['type'] = $ppitems['_pprredirect_type'];
|
240 |
+
}
|
241 |
+
|
242 |
+
}
|
243 |
+
|
244 |
+
$newmenu = array();
|
245 |
+
foreach($ppr as $ppd){
|
246 |
+
if(in_array($ppd->object_id,$ppr_newindow)){
|
247 |
+
$ppd->target = '_blank';
|
248 |
+
$ppd->classes[] = 'ppr-new-window';
|
249 |
+
}
|
250 |
+
if(in_array($ppd->object_id,$ppr_nofollow)){
|
251 |
+
$ppd->xfn = 'nofollow';
|
252 |
+
$ppd->classes[] = 'ppr-nofollow';
|
253 |
+
}
|
254 |
+
if(in_array($ppd->object_id,$ppr_url_rewrite)){
|
255 |
+
$ppd->url = $ppr_url[$ppd->object_id]['URL'];
|
256 |
+
}
|
257 |
+
$newmenu[] = $ppd;
|
258 |
+
}
|
259 |
+
return $newmenu;
|
260 |
+
}
|
261 |
+
|
262 |
// For WordPress < 2.8 function compatibility
|
263 |
if (!function_exists('esc_attr')) {
|
264 |
function esc_attr($attr){return attribute_escape( $attr );}
|
265 |
function esc_url($url){return clean_url( $url );}
|
266 |
}
|
267 |
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
//clean up the Custom Fields to make it prettier on the Edit Page
|
269 |
function ppr_init_metaclean() {
|
270 |
$thepprversion = get_option('ppr_version');
|
271 |
+
//echo $thepprversion;
|
272 |
+
if ($thepprversion=='3.2') {
|
273 |
+
update_option( 'ppr_version', '3.2' );
|
274 |
+
}else if(in_array($thepprversion,array('1.9','2.0','2.1','3.0','3.1'))) {
|
275 |
+
update_option( 'ppr_version', '3.2' );
|
276 |
}else{
|
277 |
global $wpdb;
|
278 |
//want to make sure older version upgrading still
|
279 |
+
/* //not needed any more
|
280 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_active' WHERE meta_key = 'pprredirect_active'" );
|
281 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_newwindow' WHERE meta_key = 'pprredirect_newwindow'" );
|
282 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_relnofollow' WHERE meta_key = 'pprredirect_relnofollow'" );
|
283 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_type' WHERE meta_key = 'pprredirect_type'" );
|
284 |
$wpdb->query( "UPDATE $wpdb->postmeta SET meta_key = '_pprredirect_url' WHERE meta_key = 'pprredirect_url'" );
|
285 |
+
wp_cache_flush();
|
286 |
+
*/
|
287 |
+
|
288 |
+
update_option( 'ppr_version', '3.2' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
}
|
|
|
|
|
|
|
|
|
290 |
}
|
291 |
|
292 |
function ppr_filter_pages ($link, $post) {
|
293 |
+
global $ppr_nofollow;
|
294 |
+
global $ppr_newindow;
|
295 |
+
global $ppr_url;
|
296 |
+
global $ppr_url_rewrite;
|
297 |
+
global $ppr_type;
|
298 |
+
global $wpdb;
|
299 |
+
|
300 |
if(isset($post->ID)){
|
301 |
$id = $post->ID;
|
302 |
}else{
|
303 |
$id = $post;
|
304 |
}
|
305 |
+
if(is_array($ppr_url_rewrite)){
|
306 |
+
if(in_array($id, $ppr_url_rewrite)){
|
307 |
+
$newURL = $ppr_url[$id]['URL'];
|
308 |
+
if(strpos($newURL,get_bloginfo('url'))>=0 || strpos($newURL,'www.')>=0 || strpos($newURL,'http://')>=0 || strpos($newURL,'https://')>=0){
|
309 |
+
$link = esc_url( $newURL );
|
310 |
}else{
|
311 |
+
$link = esc_url( get_bloginfo('url').'/'. $newURL );
|
312 |
}
|
313 |
}
|
314 |
}
|
315 |
+
|
316 |
return $link;
|
317 |
}
|
318 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
319 |
function addmetatohead_theme(){
|
320 |
global $ppr_url;
|
321 |
$meta_code = '<meta http-equiv="refresh" content="0; URL='.$ppr_url.'" />';
|
324 |
}
|
325 |
|
326 |
function ppr_do_redirect(){
|
327 |
+
global $post,$wp_query,$ppr_active,$wpdb;
|
328 |
+
$select_tiems = $wpdb->get_results("SELECT post_id,meta_key,meta_value FROM $wpdb->postmeta WHERE (meta_key='_pprredirect_type' OR meta_key='_pprredirect_url' OR meta_key = '_pprredirect_active') AND meta_value!='' ORDER BY post_id ASC;");
|
329 |
+
foreach($select_tiems as $pprs){
|
330 |
+
$thefirstppr[$pprs->post_id][$pprs->meta_key] = $pprs->meta_value;
|
331 |
+
$thefirstppr[$pprs->post_id]['post_id'] = $pprs->post_id;
|
332 |
+
}
|
333 |
+
foreach($thefirstppr as $ppitems){
|
334 |
+
if(isset($ppitems['_pprredirect_active']) && isset($ppitems['_pprredirect_url'])){
|
335 |
+
$ppr_url_rewrite[] = $ppitems['post_id'];
|
336 |
+
$ppr_url[$ppitems['post_id']]['URL'] = $ppitems['_pprredirect_url'];
|
337 |
+
}
|
338 |
+
if(isset($ppitems['_pprredirect_active']) && isset($ppitems['_pprredirect_type'])){
|
339 |
+
$ppr_type[$ppitems['post_id']]['type'] = $ppitems['_pprredirect_type'];
|
340 |
+
}
|
341 |
|
342 |
+
}
|
343 |
+
|
344 |
+
if($wp_query->is_single || $wp_query->is_page ):
|
345 |
+
$thisidis_current = $post->ID;
|
346 |
+
if(isset($ppr_type[$thisidis_current]['type'])){$ppr_types = $ppr_type[$thisidis_current]['type'];}else{$ppr_types = '';}
|
347 |
+
if(isset($ppr_url[$thisidis_current]['URL'])){$ppr_urls = $ppr_url[$thisidis_current]['URL'];}else{$ppr_urls='';}
|
348 |
+
|
349 |
+
if( $ppr_urls!=''):
|
350 |
+
if($ppr_types===0){$ppr_types='200';}
|
351 |
+
if($ppr_types===''){$ppr_types='302';}
|
352 |
+
if($ppr_types=='meta'):
|
353 |
//metaredirect
|
354 |
add_action('wp_head', "addmetatohead_theme",1);
|
355 |
+
else:
|
356 |
//check for http:// - as full url - then we can just redirect if it is //
|
357 |
+
if( strpos($ppr_urls, 'http://')=== 0 || strpos($ppr_urls, 'https://')=== 0){
|
358 |
+
$offsite=$ppr_urls;
|
359 |
+
header('Status: '.$ppr_types);
|
360 |
+
header('Location: '.$offsite, true, $ppr_types);
|
361 |
exit; //stop loading page
|
362 |
+
}elseif(strpos($ppr_urls, 'www')=== 0){ // check if they have full url but did not put http://
|
363 |
+
$offsite='http://'.$ppr_urls;
|
364 |
+
header("Status: $ppr_types");
|
365 |
+
header("Location: $offsite", true, $ppr_types);
|
366 |
exit; //stop loading page
|
367 |
+
}elseif(is_numeric($ppr_urls)){ // page/post number
|
368 |
if($ppr_postpage=='page'){ //page
|
369 |
$onsite=get_bloginfo('url').'/?page_id='.$ppr_url;
|
370 |
+
header("Status: $ppr_types");
|
371 |
+
header("Location: $onsite", true, $ppr_types);
|
372 |
exit; //stop loading page
|
373 |
}else{ //post
|
374 |
+
$onsite=get_bloginfo('url').'/?p='.$ppr_urls;
|
375 |
+
header("Status: $ppr_types");
|
376 |
+
header("Location: $onsite", true, $ppr_types);
|
377 |
exit; //stop loading page
|
378 |
}
|
379 |
//check permalink or local page redirect
|
380 |
}else{ // we assume they are using the permalink / page name??
|
381 |
+
$onsite=get_bloginfo('url'). $ppr_urls;
|
382 |
+
header("Location: $onsite", true, $ppr_types);
|
383 |
exit; //stop loading page
|
384 |
}
|
385 |
|
445 |
}
|
446 |
|
447 |
// When the post is saved, saves our custom data
|
|
|
448 |
|
449 |
+
function ppr_save_postdata($post_id, $post) {
|
450 |
if(isset($_REQUEST['pprredirect_noncename']) && (isset($_POST['pprredirect_active']) || isset($_POST['pprredirect_url']) || isset($_POST['pprredirect_type']) || isset($_POST['pprredirect_newwindow']) || isset($_POST['pprredirect_relnofollow']))):
|
451 |
// verify authorization
|
452 |
if(isset($_POST['pprredirect_noncename'])){
|
|
|
453 |
if ( !wp_verify_nonce( $_REQUEST['pprredirect_noncename'], 'pprredirect_noncename' )) {
|
454 |
return $post->ID;
|
455 |
}
|
496 |
}
|
497 |
|
498 |
function ppr_fix_targetsandrels($pages) {
|
499 |
+
global $post;
|
500 |
+
global $ppr_nofollow;
|
501 |
+
global $ppr_newindow;
|
502 |
+
global $ppr_url;
|
503 |
+
global $ppr_url_rewrite;
|
504 |
+
|
505 |
+
if (!$ppr_url && !$ppr_newindow && !$ppr_nofollow){
|
506 |
return $pages;
|
507 |
}
|
508 |
|
509 |
$this_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
|
|
|
510 |
|
511 |
+
if(count($ppr_nofollow)>=1) {
|
512 |
+
foreach($ppr_nofollow as $relid){
|
513 |
+
$validexp="@\<li(?:.*?)".$relid."(?:.*?)\>\<a(?:.*?)rel\=\"nofollow\"(?:.*?)\>@i";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
514 |
$found = preg_match_all($validexp, $pages, $matches);
|
|
|
515 |
if($found!=0){
|
516 |
$pages = $pages; //do nothing 'cause it is already a rel=nofollow.
|
517 |
}else{
|
518 |
+
$pages = preg_replace('@<li(.*?)-'.$relid.'(.*?)\>\<a(.*?)\>@i', '<li\1-'.$relid.'\2><a\3 rel="nofollow">', $pages);
|
|
|
519 |
}
|
520 |
}
|
521 |
}
|
522 |
|
523 |
+
if(count($ppr_newindow)>=1) {
|
524 |
+
foreach($ppr_newindow as $p){
|
525 |
+
$validexp="@\<li(?:.*?)".$p."(?:.*?)\>\<a(?:.*?)target\=(?:.*?)\>@i";
|
|
|
|
|
526 |
$found = preg_match_all($validexp, $pages, $matches);
|
|
|
|
|
527 |
if($found!=0){
|
528 |
$pages = $pages; //do nothing 'cause it is already a rel=nofollow.
|
529 |
}else{
|
530 |
+
$pages = preg_replace('@<li(.*?)-'.$p.'(.*?)\>\<a(.*?)\>@i', '<li\1-'.$p.'\2><a\3 target="_blank">', $pages);
|
|
|
531 |
}
|
532 |
}
|
533 |
}
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== Quick Page/Post Redirect ===
|
2 |
Contributors: Don Fischer
|
3 |
-
Donate link: http://fischercreativemedia.com/
|
4 |
-
Tags: redirect, 301, 302, meta, post, plugin, page, forward, re-direct, nofollow, wpmu, menu links,
|
5 |
Requires at least: 2.5
|
6 |
-
Tested up to: 3.1
|
7 |
-
Stable tag: 3.
|
8 |
|
9 |
Redirect Pages/Posts to another page/post or external URL. Adds edit box to admin edit so user can specify the redirect Location and type.
|
10 |
|
@@ -12,11 +12,12 @@ Redirect Pages/Posts to another page/post or external URL. Adds edit box to admi
|
|
12 |
Quick Page/Post Redirect Plugin redirects WordPress Pages or Posts to another location quickly.
|
13 |
It adds an option box to the edit section where you can specify the redirect location and type of redirect that you want, temporary, permanent, or meta. See blow for additional features added in each new version.
|
14 |
|
15 |
-
=
|
16 |
-
* 1. you can
|
17 |
* 2. You can add a *rel="nofollow"* attribute to the link of a redirect
|
18 |
* 3. You can completely re-write the URL for the redirct so it takes the place of the default page URL (rewrite the href link)
|
19 |
-
* 4.
|
|
|
20 |
|
21 |
The redirect Location can be to another WordPress page/post or any other website with an external URL. It allows the use of a full URL path, the post or page ID, permalink or page-name.
|
22 |
|
@@ -24,7 +25,6 @@ PLEASE NOTE: At this time, the a new page or post needs to be Published in order
|
|
24 |
|
25 |
This plugin is also not compatible with WordPress versions less than 2.5.
|
26 |
|
27 |
-
|
28 |
= TROUBLESHOOTING: =
|
29 |
* If you check the box for "Show Redirect URL below" on the edit page, please note that you MUST use the full URL in the Redirect URL box. If you do not, you may experience some odd links and 404 pages, as this option cahnges the Permalink for the page/post to the EXACT URL you eneter in that field. (i.e., if you enter '2' in the field, it will redirect to 'http://2' which is not the same as 'http://yoursite.com/?p=2').
|
30 |
* If your browser tells you that your are in an infinite loop, check to make sure you do not have pages redirecting to another page that redirects back to the initial page. That WILL cause an infinate loop.
|
@@ -38,13 +38,13 @@ This plugin is also not compatible with WordPress versions less than 2.5.
|
|
38 |
* Upload `quick_page_post_redirect` folder to the `/wp-content/plugins/` directory
|
39 |
* Activate the plugin through the 'Plugins' menu in WordPress
|
40 |
* Once Activated, you can add a redirect by entering the correct information in the `Quick Page/Post Redirect` box in the edit section of a page or post
|
41 |
-
*
|
42 |
|
43 |
= If you install this plugin through WordPress 2.8+ plugin search interface: =
|
44 |
* Click Install `Quick Page/Post Redirect Plugin`
|
45 |
* Activate the plugin through the 'Plugins' menu in WordPress
|
46 |
* Once Activated, you can add a redirect by entering the correct information in the `Quick Page/Post Redirect` box in the edit section of a page or post
|
47 |
-
*
|
48 |
|
49 |
== Frequently Asked Questions ==
|
50 |
= With 3.0s new menu structure, isn't your plugin now obsolete? =
|
@@ -62,13 +62,13 @@ If you had a link on a site that went to http://yoursite.com/aboutme.html you ca
|
|
62 |
The new fuctionality is located in the Admin under Settings/Quick Redirects. The olde URL goes in the Request field and the to new URL goes in the Destination field. Simple and Quick!
|
63 |
|
64 |
= Can I add 'rel="nofollow" attribute to the redirect link? =
|
65 |
-
YES!
|
66 |
|
67 |
= Can I make the redirect open in a new window? =
|
68 |
-
YES!
|
69 |
|
70 |
= I want to just have the link for the redirecting page/post show the new redirect link in the link, not the old one, can I do that? =
|
71 |
-
YES!
|
72 |
|
73 |
= I have Business Cards/Postcards/Ads that say my website is http://something.com/my-name/ or http://something.com/my-product/, can I set that up with this? =
|
74 |
YES! Just set up a redirect (see above) and set the Request field to /my-name/ or /my-product/ and the Destination field to the place you want it to go. The destination doesn't even need to be on the same site - it can go anywhere you want it to go!
|
@@ -109,6 +109,11 @@ Yes, you can, but you do not always need to. If you are redirecting to an extern
|
|
109 |
3. Menu for the Quick 301 Redirects page - located in the settings menu.
|
110 |
|
111 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
112 |
= 3.1 =
|
113 |
* Re-issue of 2.1 for immediate fix of issue with the 3.0 version.(6/21/2010)
|
114 |
= 3.0 =
|
1 |
=== Quick Page/Post Redirect ===
|
2 |
Contributors: Don Fischer
|
3 |
+
Donate link: http://www.fischercreativemedia.com/wordpress-plugins/donate/
|
4 |
+
Tags: redirect, 301, 302, meta, post, plugin, page, forward, re-direct, nofollow, wpmu, menu links, posts, pages, admin, 404
|
5 |
Requires at least: 2.5
|
6 |
+
Tested up to: 3.1 beta
|
7 |
+
Stable tag: 3.2
|
8 |
|
9 |
Redirect Pages/Posts to another page/post or external URL. Adds edit box to admin edit so user can specify the redirect Location and type.
|
10 |
|
12 |
Quick Page/Post Redirect Plugin redirects WordPress Pages or Posts to another location quickly.
|
13 |
It adds an option box to the edit section where you can specify the redirect location and type of redirect that you want, temporary, permanent, or meta. See blow for additional features added in each new version.
|
14 |
|
15 |
+
= Features: =
|
16 |
+
* 1. you can open a redirect link in a new window
|
17 |
* 2. You can add a *rel="nofollow"* attribute to the link of a redirect
|
18 |
* 3. You can completely re-write the URL for the redirct so it takes the place of the default page URL (rewrite the href link)
|
19 |
+
* 4. You can redirect without needing to create a Page or Post. This is very useful for sites that were converted to WordPress and have old links that create 404 errors (see FAQs for more information).
|
20 |
+
* 5. Works with new WordPress menus as of plugin version 3.2
|
21 |
|
22 |
The redirect Location can be to another WordPress page/post or any other website with an external URL. It allows the use of a full URL path, the post or page ID, permalink or page-name.
|
23 |
|
25 |
|
26 |
This plugin is also not compatible with WordPress versions less than 2.5.
|
27 |
|
|
|
28 |
= TROUBLESHOOTING: =
|
29 |
* If you check the box for "Show Redirect URL below" on the edit page, please note that you MUST use the full URL in the Redirect URL box. If you do not, you may experience some odd links and 404 pages, as this option cahnges the Permalink for the page/post to the EXACT URL you eneter in that field. (i.e., if you enter '2' in the field, it will redirect to 'http://2' which is not the same as 'http://yoursite.com/?p=2').
|
30 |
* If your browser tells you that your are in an infinite loop, check to make sure you do not have pages redirecting to another page that redirects back to the initial page. That WILL cause an infinate loop.
|
38 |
* Upload `quick_page_post_redirect` folder to the `/wp-content/plugins/` directory
|
39 |
* Activate the plugin through the 'Plugins' menu in WordPress
|
40 |
* Once Activated, you can add a redirect by entering the correct information in the `Quick Page/Post Redirect` box in the edit section of a page or post
|
41 |
+
* You can create a redirect with the 'Quick Redirects' option located in the Admin Settings menu.
|
42 |
|
43 |
= If you install this plugin through WordPress 2.8+ plugin search interface: =
|
44 |
* Click Install `Quick Page/Post Redirect Plugin`
|
45 |
* Activate the plugin through the 'Plugins' menu in WordPress
|
46 |
* Once Activated, you can add a redirect by entering the correct information in the `Quick Page/Post Redirect` box in the edit section of a page or post
|
47 |
+
* You can create a redirect with the 'Quick Redirects' option located in the Admin Settings menu.
|
48 |
|
49 |
== Frequently Asked Questions ==
|
50 |
= With 3.0s new menu structure, isn't your plugin now obsolete? =
|
62 |
The new fuctionality is located in the Admin under Settings/Quick Redirects. The olde URL goes in the Request field and the to new URL goes in the Destination field. Simple and Quick!
|
63 |
|
64 |
= Can I add 'rel="nofollow" attribute to the redirect link? =
|
65 |
+
YES! Since version 1.9, you can add a ' rel="nofollow" ' attribute for the redirect link. Simply check the "add rel=nofollow" box when setting up the redirect on the page/post edit page. Note - this option is not available for the Quick Redirects method.
|
66 |
|
67 |
= Can I make the redirect open in a new window? =
|
68 |
+
YES! Since version 1.9, you can make the redirect link open in a new window. Simply check the "Open in a new window" box when setting up the redirect on the page/post edit page. Note - this option is not available for the Quick Redirects method.
|
69 |
|
70 |
= I want to just have the link for the redirecting page/post show the new redirect link in the link, not the old one, can I do that? =
|
71 |
+
YES! Since version 1.9, you can hide the original page link and have it replaced with the redirect link. Any place the theme calls either "wp_page_links", "post_links" or "page_links" functions, the plugin can replace the original link with the new one. Simply check the "Show Redirect URL" box when setting up the redirect on the page/post edit page. Note - this option is not available for the Quick Redirects method.
|
72 |
|
73 |
= I have Business Cards/Postcards/Ads that say my website is http://something.com/my-name/ or http://something.com/my-product/, can I set that up with this? =
|
74 |
YES! Just set up a redirect (see above) and set the Request field to /my-name/ or /my-product/ and the Destination field to the place you want it to go. The destination doesn't even need to be on the same site - it can go anywhere you want it to go!
|
109 |
3. Menu for the Quick 301 Redirects page - located in the settings menu.
|
110 |
|
111 |
== Changelog ==
|
112 |
+
= 3.2 =
|
113 |
+
* remove functions ppr_linktotarget, ppr_linktonorel, ppr_redirectto and ppr_linktometa.(12/10/2010)
|
114 |
+
* re-write functions to consolidate queries. (12/10/2010)
|
115 |
+
* added new filters for New menu structure to filter wp_nav_menu menus as well as old wp_page_menus functions. (12/10/2010)
|
116 |
+
* cleaned up new window and nofollow code to work more consistently. (12/10/2010)
|
117 |
= 3.1 =
|
118 |
* Re-issue of 2.1 for immediate fix of issue with the 3.0 version.(6/21/2010)
|
119 |
= 3.0 =
|