|
1 | 1 | <?php
|
| 2 | +/** |
| 3 | + * Plugin Name: jquery-wp-content Redirection extensions |
| 4 | + * Description: Adds custom XML-RPC methods to control redirection. |
| 5 | + */ |
2 | 6 |
|
3 |
| -$jquery_redirects = array( |
4 |
| - 'qunitjs.com' => array( |
5 |
| - '/addons/' => '/plugins/' |
6 |
| - ) |
7 |
| -); |
| 7 | +$jquery_redirects = 'jquery_redirects'; |
8 | 8 |
|
9 | 9 | add_filter( 'template_redirect', function() {
|
10 | 10 | global $jquery_redirects;
|
|
14 | 14 | return;
|
15 | 15 | }
|
16 | 16 |
|
17 |
| - // Check if this site has any redirects |
18 |
| - if ( empty( $jquery_redirects[ JQUERY_LIVE_SITE ] ) ) { |
19 |
| - return; |
| 17 | + $url = trailingslashit( $_SERVER[ 'REQUEST_URI' ] ); |
| 18 | + |
| 19 | + // Check for redirects stored in the transients |
| 20 | + $transient = get_site_transient( $jquery_redirects ); |
| 21 | + |
| 22 | + if ( $transient && !empty( $transient[ $url ] ) ) { |
| 23 | + wp_redirect( $transient[ $url ], 301 ); |
20 | 24 | }
|
| 25 | +} ); |
21 | 26 |
|
22 |
| - // See if any redirects match the current URL |
23 |
| - $url = trailingslashit( $_SERVER[ 'REQUEST_URI' ] ); |
24 |
| - if ( !empty( $jquery_redirects[ JQUERY_LIVE_SITE ][ $url ] ) ) { |
25 |
| - wp_redirect( $jquery_redirects[ JQUERY_LIVE_SITE ][ $url ], 301 ); |
| 27 | +add_filter( 'xmlrpc_methods', function( $methods ) { |
| 28 | + $methods[ 'jq.setRedirects' ] = 'jq_set_redirects'; |
| 29 | + return $methods; |
| 30 | +} ); |
| 31 | + |
| 32 | +function jq_set_redirects( $args ) { |
| 33 | + global $wp_xmlrpc_server; |
| 34 | + global $jquery_redirects; |
| 35 | + |
| 36 | + // Authenticate |
| 37 | + $blog_id = $args[ 0 ]; |
| 38 | + $username = $args[ 1 ]; |
| 39 | + $password = $args[ 2 ]; |
| 40 | + |
| 41 | + if ( ! $user = $wp_xmlrpc_server->login( $username, $password ) ) { |
| 42 | + return $wp_xmlrpc_server->error; |
26 | 43 | }
|
27 |
| -}); |
| 44 | + |
| 45 | + // Store redirects |
| 46 | + return set_site_transient( $jquery_redirects, json_decode( $args[ 3 ], true ), 0 ); |
| 47 | +} |
0 commit comments