2003-10-26 05:25:26 +00:00
< ? php
2008-08-16 07:27:34 +00:00
/**
* Permalink settings administration panel .
*
* @ package WordPress
* @ subpackage Administration
*/
/** WordPress Administration Bootstrap */
2004-10-19 03:03:06 +00:00
require_once ( 'admin.php' );
2006-11-18 07:31:29 +00:00
2010-03-18 17:46:25 +00:00
if ( ! current_user_can ( 'manage_options' ) )
wp_die ( __ ( 'You do not have sufficient permissions to manage options for this site.' ) );
2009-08-01 21:12:17 +00:00
2008-02-14 00:39:38 +00:00
$title = __ ( 'Permalink Settings' );
2006-11-18 07:31:29 +00:00
$parent_file = 'options-general.php' ;
2008-08-16 07:27:34 +00:00
/**
* Display JavaScript on the page .
*
* @ package WordPress
* @ subpackage Permalink_Settings_Panel
*/
2005-08-03 01:50:56 +00:00
function add_js () {
?>
< script type = " text/javascript " >
2005-08-03 01:56:02 +00:00
//<![CDATA[
function GetElementsWithClassName ( elementName , className ) {
var allElements = document . getElementsByTagName ( elementName );
var elemColl = new Array ();
for ( i = 0 ; i < allElements . length ; i ++ ) {
if ( allElements [ i ] . className == className ) {
elemColl [ elemColl . length ] = allElements [ i ];
}
}
return elemColl ;
}
function upit () {
var inputColl = GetElementsWithClassName ( 'input' , 'tog' );
var structure = document . getElementById ( 'permalink_structure' );
var inputs = '' ;
for ( i = 0 ; i < inputColl . length ; i ++ ) {
if ( inputColl [ i ] . checked && inputColl [ i ] . value != '' ) {
inputs += inputColl [ i ] . value + ' ' ;
}
}
inputs = inputs . substr ( 0 , inputs . length - 1 );
if ( 'custom' != inputs )
structure . value = inputs ;
}
function blurry () {
if ( ! document . getElementById ) return ;
2005-11-18 09:36:43 +00:00
var structure = document . getElementById ( 'permalink_structure' );
structure . onfocus = function () { document . getElementById ( 'custom_selection' ) . checked = 'checked' ; }
2005-08-03 01:56:02 +00:00
var aInputs = document . getElementsByTagName ( 'input' );
2006-02-12 07:53:23 +00:00
for ( var i = 0 ; i < aInputs . length ; i ++ ) {
2005-08-03 01:56:02 +00:00
aInputs [ i ] . onclick = aInputs [ i ] . onkeyup = upit ;
}
}
window . onload = blurry ;
//]]>
</ script >
2005-08-03 01:50:56 +00:00
< ? php
}
add_filter ( 'admin_head' , 'add_js' );
2004-10-19 03:03:06 +00:00
include ( 'admin-header.php' );
2003-10-26 05:25:26 +00:00
2004-12-23 00:53:56 +00:00
$home_path = get_home_path ();
2009-05-16 02:04:36 +00:00
$iis7_permalinks = iis7_supports_permalinks ();
2004-08-27 05:20:59 +00:00
2010-04-10 11:30:34 +00:00
$prefix = '' ;
if ( ! got_mod_rewrite () && ! $iis7_permalinks )
$prefix .= '/index.php' ;
if ( is_multisite () && ! is_subdomain_install () && is_main_site () )
$prefix .= '/blog' ;
2006-05-02 22:36:06 +00:00
if ( isset ( $_POST [ 'permalink_structure' ]) || isset ( $_POST [ 'category_base' ]) ) {
check_admin_referer ( 'update-permalink' );
2006-03-30 23:12:54 +00:00
2010-04-04 00:41:39 +00:00
if ( isset ( $_POST [ 'permalink_structure' ] ) ) {
2004-10-14 08:09:00 +00:00
$permalink_structure = $_POST [ 'permalink_structure' ];
2010-04-10 11:30:34 +00:00
if ( ! empty ( $permalink_structure ) )
$permalink_structure = $prefix . preg_replace ( '#/+#' , '/' , '/' . str_replace ( '#' , '' , $permalink_structure ) );
2010-04-04 00:41:39 +00:00
$wp_rewrite -> set_permalink_structure ( $permalink_structure );
2004-10-18 04:50:08 +00:00
}
2006-02-12 07:53:23 +00:00
2010-04-04 00:41:39 +00:00
if ( isset ( $_POST [ 'category_base' ] ) ) {
2004-10-14 08:09:00 +00:00
$category_base = $_POST [ 'category_base' ];
2010-04-10 11:30:34 +00:00
if ( ! empty ( $category_base ) )
$category_base = $prefix . preg_replace ( '#/+#' , '/' , '/' . str_replace ( '#' , '' , $category_base ) );
2010-04-04 00:41:39 +00:00
$wp_rewrite -> set_category_base ( $category_base );
2004-10-18 04:50:08 +00:00
}
2007-03-31 09:19:32 +00:00
2010-04-04 00:41:39 +00:00
if ( isset ( $_POST [ 'tag_base' ] ) ) {
2007-03-31 09:19:32 +00:00
$tag_base = $_POST [ 'tag_base' ];
2010-04-10 11:30:34 +00:00
if ( ! empty ( $tag_base ) )
$tag_base = $prefix . preg_replace ( '#/+#' , '/' , '/' . str_replace ( '#' , '' , $tag_base ) );
2010-04-04 00:41:39 +00:00
$wp_rewrite -> set_tag_base ( $tag_base );
2007-03-31 09:19:32 +00:00
}
2003-10-26 05:25:26 +00:00
}
2006-02-12 07:53:23 +00:00
2006-08-30 21:46:31 +00:00
$permalink_structure = get_option ( 'permalink_structure' );
$category_base = get_option ( 'category_base' );
2007-03-31 09:19:32 +00:00
$tag_base = get_option ( 'tag_base' );
2004-10-14 08:09:00 +00:00
2009-05-16 02:04:36 +00:00
if ( $iis7_permalinks ) {
if ( ( ! file_exists ( $home_path . 'web.config' ) && win_is_writable ( $home_path ) ) || win_is_writable ( $home_path . 'web.config' ) )
$writable = true ;
else
$writable = false ;
} else {
if ( ( ! file_exists ( $home_path . '.htaccess' ) && is_writable ( $home_path ) ) || is_writable ( $home_path . '.htaccess' ) )
$writable = true ;
else
$writable = false ;
}
2003-10-26 05:25:26 +00:00
2009-05-16 02:04:36 +00:00
if ( $wp_rewrite -> using_index_permalinks () )
2004-09-15 15:09:39 +00:00
$usingpi = true ;
else
$usingpi = false ;
2003-10-26 05:25:26 +00:00
2005-12-28 07:05:05 +00:00
$wp_rewrite -> flush_rules ();
2004-09-15 15:09:39 +00:00
2010-03-15 17:32:34 +00:00
if ( isset ( $_POST [ 'submit' ])) : ?>
2009-12-26 09:00:58 +00:00
< div id = " message " class = " updated " >< p >< ? php
2010-03-15 17:32:34 +00:00
if ( ! is_multisite () ) {
if ( $iis7_permalinks ) {
if ( $permalink_structure && ! $usingpi && ! $writable )
_e ( 'You should update your web.config now' );
else if ( $permalink_structure && ! $usingpi && $writable )
_e ( 'Permalink structure updated. Remove write access on web.config file now!' );
else
_e ( 'Permalink structure updated' );
} else {
if ( $permalink_structure && ! $usingpi && ! $writable )
_e ( 'You should update your .htaccess now.' );
else
_e ( 'Permalink structure updated.' );
}
2009-05-16 02:04:36 +00:00
} else {
2010-03-15 17:32:34 +00:00
_e ( 'Permalink structure updated.' );
2009-05-16 02:04:36 +00:00
}
?>
</ p ></ div >
2004-04-28 04:56:29 +00:00
< ? php endif ; ?>
2004-07-27 23:37:45 +00:00
2007-09-03 23:32:58 +00:00
< div class = " wrap " >
2008-11-26 13:51:25 +00:00
< ? php screen_icon (); ?>
2009-05-18 15:11:07 +00:00
< h2 >< ? php echo esc_html ( $title ); ?> </h2>
2008-10-17 20:02:03 +00:00
2007-09-03 23:32:58 +00:00
< form name = " form " action = " options-permalink.php " method = " post " >
2006-09-19 06:11:42 +00:00
< ? php wp_nonce_field ( 'update-permalink' ) ?>
2008-10-14 01:18:52 +00:00
2006-08-30 16:40:17 +00:00
< p >< ? php _e ( 'By default WordPress uses web <abbr title="Universal Resource Locator">URL</abbr>s which have question marks and lots of numbers in them, however WordPress offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links. A <a href="http://codex.wordpress.org/Using_Permalinks">number of tags are available</a>, and here are some examples to get you started.' ); ?> </p>
2004-05-05 07:34:41 +00:00
2005-08-03 01:50:56 +00:00
< ? php
2010-02-18 15:40:19 +00:00
if ( ! got_mod_rewrite () && ! $iis7_permalinks )
2010-04-10 11:30:34 +00:00
$permalink_structure = preg_replace ( '|^/?index\.php|' , '' , $permalink_structure );
if ( is_multisite () && ! is_subdomain_install () && is_main_site () ) {
$permalink_structure = preg_replace ( '|^/?blog|' , '' , $permalink_structure );
$category_base = preg_replace ( '|^/?blog|' , '' , $category_base );
$tag_base = preg_replace ( '|^/?blog|' , '' , $tag_base );
}
2005-11-10 23:25:39 +00:00
$structures = array (
'' ,
2010-04-10 11:30:34 +00:00
'/%year%/%monthnum%/%day%/%postname%/' ,
'/%year%/%monthnum%/%postname%/' ,
'/archives/%post_id%'
2005-11-10 23:25:39 +00:00
);
2005-08-03 01:50:56 +00:00
?>
2008-02-22 06:43:56 +00:00
< h3 >< ? php _e ( 'Common settings' ); ?> </h3>
2008-02-24 04:33:10 +00:00
< table class = " form-table " >
2008-02-22 06:43:56 +00:00
< tr >
2008-02-22 07:43:06 +00:00
< th >< label >< input name = " selection " type = " radio " value = " " class = " tog " < ? php checked ( '' , $permalink_structure ); ?> /> <?php _e('Default'); ?></label></th>
2008-02-22 17:30:43 +00:00
< td >< code >< ? php echo get_option ( 'home' ); ?> /?p=123</code></td>
2008-02-22 06:43:56 +00:00
</ tr >
< tr >
2009-05-05 19:43:53 +00:00
< th >< label >< input name = " selection " type = " radio " value = " <?php echo esc_attr( $structures[1] ); ?> " class = " tog " < ? php checked ( $structures [ 1 ], $permalink_structure ); ?> /> <?php _e('Day and name'); ?></label></th>
2008-02-22 06:43:56 +00:00
< td >< code >< ? php echo get_option ( 'home' ) . $prefix . '/' . date ( 'Y' ) . '/' . date ( 'm' ) . '/' . date ( 'd' ) . '/sample-post/' ; ?> </code></td>
</ tr >
< tr >
2009-05-05 19:43:53 +00:00
< th >< label >< input name = " selection " type = " radio " value = " <?php echo esc_attr( $structures[2] ); ?> " class = " tog " < ? php checked ( $structures [ 2 ], $permalink_structure ); ?> /> <?php _e('Month and name'); ?></label></th>
2008-03-11 16:41:53 +00:00
< td >< code >< ? php echo get_option ( 'home' ) . $prefix . '/' . date ( 'Y' ) . '/' . date ( 'm' ) . '/sample-post/' ; ?> </code></td>
2008-03-11 07:23:07 +00:00
</ tr >
< tr >
2009-05-05 19:43:53 +00:00
< th >< label >< input name = " selection " type = " radio " value = " <?php echo esc_attr( $structures[3] ); ?> " class = " tog " < ? php checked ( $structures [ 3 ], $permalink_structure ); ?> /> <?php _e('Numeric'); ?></label></th>
2008-02-22 06:43:56 +00:00
< td >< code >< ? php echo get_option ( 'home' ) . $prefix ; ?> /archives/123</code></td>
</ tr >
< tr >
2008-02-22 07:43:06 +00:00
< th >
2010-04-10 11:30:34 +00:00
< label >< input name = " selection " id = " custom_selection " type = " radio " value = " custom " class = " tog " < ? php checked ( ! in_array ( $permalink_structure , $structures ) ); ?> />
2008-02-22 06:43:56 +00:00
< ? php _e ( 'Custom Structure' ); ?>
</ label >
2008-02-22 07:43:06 +00:00
</ th >
2008-02-22 06:43:56 +00:00
< td >
2010-04-10 11:30:34 +00:00
< ? php echo $prefix ; ?>
2009-05-05 19:43:53 +00:00
< input name = " permalink_structure " id = " permalink_structure " type = " text " value = " <?php echo esc_attr( $permalink_structure ); ?> " class = " regular-text code " />
2008-02-22 06:43:56 +00:00
</ td >
</ tr >
</ table >
2004-09-15 15:09:39 +00:00
2005-08-03 01:50:56 +00:00
< h3 >< ? php _e ( 'Optional' ); ?> </h3>
2009-05-16 02:04:36 +00:00
< ? php if ( $is_apache || $iis7_permalinks ) : ?>
2008-11-13 06:29:55 +00:00
< p >< ? php _e ( 'If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <kbd>topics</kbd> as your category base would make your category links like <code>http://example.org/topics/uncategorized/</code>. If you leave these blank the defaults will be used.' ) ?> </p>
2005-02-14 00:51:43 +00:00
< ? php else : ?>
2008-07-17 19:41:48 +00:00
< p >< ? php _e ( 'If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <code>topics</code> as your category base would make your category links like <code>http://example.org/index.php/topics/uncategorized/</code>. If you leave these blank the defaults will be used.' ) ?> </p>
2005-02-14 00:51:43 +00:00
< ? php endif ; ?>
2008-02-22 06:43:56 +00:00
2008-02-24 04:33:10 +00:00
< table class = " form-table " >
2008-02-22 06:43:56 +00:00
< tr >
2010-01-21 21:37:43 +00:00
< th >< label for = " category_base " >< ? php /* translators: prefix for category permalinks */ _e ( 'Category base' ); ?> </label></th>
2010-04-10 11:30:34 +00:00
< td >< ? php echo $prefix ; ?> <input name="category_base" id="category_base" type="text" value="<?php echo esc_attr( $category_base ); ?>" class="regular-text code" /></td>
2008-02-22 06:43:56 +00:00
</ tr >
< tr >
2008-05-04 10:37:06 +00:00
< th >< label for = " tag_base " >< ? php _e ( 'Tag base' ); ?> </label></th>
2010-04-10 11:30:34 +00:00
< td >< ? php echo $prefix ; ?> <input name="tag_base" id="tag_base" type="text" value="<?php echo esc_attr($tag_base); ?>" class="regular-text code" /></td>
2008-02-22 06:43:56 +00:00
</ tr >
2008-09-09 22:31:22 +00:00
< ? php do_settings_fields ( 'permalink' , 'optional' ); ?>
2008-02-22 06:43:56 +00:00
</ table >
2008-09-09 22:31:22 +00:00
< ? php do_settings_sections ( 'permalink' ); ?>
2008-10-14 01:18:52 +00:00
< p class = " submit " >
2009-05-05 19:43:53 +00:00
< input type = " submit " name = " submit " class = " button-primary " value = " <?php esc_attr_e('Save Changes') ?> " />
2008-10-14 01:18:52 +00:00
</ p >
2007-09-03 23:32:58 +00:00
</ form >
2010-02-26 19:59:04 +00:00
< ? php if ( ! is_multisite () ) { ?>
2010-04-10 11:30:34 +00:00
< ? php if ( $iis7_permalinks ) :
2010-01-15 22:11:12 +00:00
if ( isset ( $_POST [ 'submit' ]) && $permalink_structure && ! $usingpi && ! $writable ) :
2009-11-23 18:17:46 +00:00
if ( file_exists ( $home_path . 'web.config' ) ) : ?>
2009-05-16 02:04:36 +00:00
< p >< ? php _e ( 'If your <code>web.config</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your <code>web.config</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this rule inside of the <code>/<configuration>/<system.webServer>/<rewrite>/<rules></code> element in <code>web.config</code> file.' ) ?> </p>
< form action = " options-permalink.php " method = " post " >
< ? php wp_nonce_field ( 'update-permalink' ) ?>
2009-11-23 18:17:46 +00:00
< p >< textarea rows = " 9 " class = " large-text readonly " name = " rules " id = " rules " readonly = " readonly " >< ? php echo esc_html ( $wp_rewrite -> iis7_url_rewrite_rules ()); ?> </textarea></p>
2009-05-16 02:04:36 +00:00
</ form >
2009-05-24 23:47:49 +00:00
< p >< ? php _e ( 'If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.' ) ?> </p>
2009-11-23 18:17:46 +00:00
< ? php else : ?>
< p >< ? php _e ( 'If the root directory of your site were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your <code>web.config</code> file. Create a new file, called <code>web.config</code> in the root directory of your site. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this code into the <code>web.config</code> file.' ) ?> </p>
< form action = " options-permalink.php " method = " post " >
< ? php wp_nonce_field ( 'update-permalink' ) ?>
< p >< textarea rows = " 18 " class = " large-text readonly " name = " rules " id = " rules " readonly = " readonly " >< ? php echo esc_html ( $wp_rewrite -> iis7_url_rewrite_rules ( true )); ?> </textarea></p>
</ form >
2010-01-15 22:11:12 +00:00
< p >< ? php _e ( 'If you temporarily make your site’s root directory writable for us to generate the <code>web.config</code> file automatically, do not forget to revert the permissions after the file has been created.' ) ?> </p>
2009-11-23 18:17:46 +00:00
< ? php endif ; ?>
2009-05-16 02:04:36 +00:00
< ? php endif ; ?>
2009-05-24 23:47:49 +00:00
< ? php else :
2009-05-16 02:04:36 +00:00
if ( $permalink_structure && ! $usingpi && ! $writable ) : ?>
< p >< ? php _e ( 'If your <code>.htaccess</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all.' ) ?> </p>
2004-07-27 23:37:45 +00:00
< form action = " options-permalink.php " method = " post " >
2006-05-02 22:36:06 +00:00
< ? php wp_nonce_field ( 'update-permalink' ) ?>
2009-05-18 15:11:07 +00:00
< p >< textarea rows = " 6 " class = " large-text readonly " name = " rules " id = " rules " readonly = " readonly " >< ? php echo esc_html ( $wp_rewrite -> mod_rewrite_rules ()); ?> </textarea></p>
2004-03-08 05:12:11 +00:00
</ form >
2009-05-16 02:04:36 +00:00
< ? php endif ; ?>
2004-12-12 06:31:01 +00:00
< ? php endif ; ?>
2010-01-12 21:11:52 +00:00
< ? php } // multisite ?>
2004-09-15 15:09:39 +00:00
2004-05-14 08:38:34 +00:00
</ div >
2003-10-26 05:25:26 +00:00
2005-12-12 01:48:12 +00:00
< ? php require ( './admin-footer.php' ); ?>