X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/784f914b1e4b1c62d6657e86397c2e83bcee4295..febc815b2c9d85be5717da9e8d164bd2daa97e31:/wp-admin/options-permalink.php diff --git a/wp-admin/options-permalink.php b/wp-admin/options-permalink.php index 6fab4d21..b6c52c51 100644 --- a/wp-admin/options-permalink.php +++ b/wp-admin/options-permalink.php @@ -10,7 +10,7 @@ require_once( dirname( __FILE__ ) . '/admin.php' ); if ( ! current_user_can( 'manage_options' ) ) - wp_die( __( 'You do not have sufficient permissions to manage options for this site.' ) ); + wp_die( __( 'Sorry, you are not allowed to manage options for this site.' ) ); $title = __('Permalink Settings'); $parent_file = 'options-general.php'; @@ -66,6 +66,30 @@ if ( is_multisite() && ! is_subdomain_install() && is_main_site() && 0 === strpo $blog_prefix = '/blog'; } +$category_base = get_option( 'category_base' ); +$tag_base = get_option( 'tag_base' ); +$update_required = false; + +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; +} elseif ( $is_nginx ) { + $writable = false; +} else { + if ( ( ! file_exists( $home_path . '.htaccess' ) && is_writable( $home_path ) ) || is_writable( $home_path . '.htaccess' ) ) { + $writable = true; + } else { + $writable = false; + $existing_rules = array_filter( extract_from_markers( $home_path . '.htaccess', 'WordPress' ) ); + $new_rules = array_filter( explode( "\n", $wp_rewrite->mod_rewrite_rules() ) ); + $update_required = ( $new_rules !== $existing_rules ); + } +} + +$using_index_permalinks = $wp_rewrite->using_index_permalinks(); + if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) { check_admin_referer('update-permalink'); @@ -82,6 +106,9 @@ if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) { else $permalink_structure = $blog_prefix . $permalink_structure; } + + $permalink_structure = sanitize_option( 'permalink_structure', $permalink_structure ); + $wp_rewrite->set_permalink_structure( $permalink_structure ); } @@ -99,68 +126,32 @@ if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) { $wp_rewrite->set_tag_base( $tag_base ); } - wp_redirect( admin_url( 'options-permalink.php?settings-updated=true' ) ); - exit; -} + $message = __( 'Permalink structure updated.' ); -$category_base = get_option( 'category_base' ); -$tag_base = get_option( 'tag_base' ); -$update_required = false; + if ( $iis7_permalinks ) { + if ( $permalink_structure && ! $using_index_permalinks && ! $writable ) { + $message = __( 'You should update your web.config now.' ); + } elseif ( $permalink_structure && ! $using_index_permalinks && $writable ) { + $message = __( 'Permalink structure updated. Remove write access on web.config file now!' ); + } + } elseif ( ! $is_nginx && $permalink_structure && ! $using_index_permalinks && ! $writable && $update_required ) { + $message = __( 'You should update your .htaccess now.' ); + } -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; -} elseif ( $is_nginx ) { - $writable = false; -} else { - if ( ( ! file_exists( $home_path . '.htaccess' ) && is_writable( $home_path ) ) || is_writable( $home_path . '.htaccess' ) ) { - $writable = true; - } else { - $writable = false; - $existing_rules = array_filter( extract_from_markers( $home_path . '.htaccess', 'WordPress' ) ); - $new_rules = array_filter( explode( "\n", $wp_rewrite->mod_rewrite_rules() ) ); - $update_required = ( $new_rules !== $existing_rules ); + if ( ! get_settings_errors() ) { + add_settings_error( 'general', 'settings_updated', $message, 'updated' ); } -} -if ( $wp_rewrite->using_index_permalinks() ) - $usingpi = true; -else - $usingpi = false; + set_transient( 'settings_errors', get_settings_errors(), 30 ); + + wp_redirect( admin_url( 'options-permalink.php?settings-updated=true' ) ); + exit; +} flush_rewrite_rules(); require( ABSPATH . 'wp-admin/admin-header.php' ); - -if ( ! empty( $_GET['settings-updated'] ) ) : ?> -
-
web.config file were writable, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your web.config
file. Click in the field and press CTRL + a to select all. Then insert this rule inside of the /<configuration>/<system.webServer>/<rewrite>/<rules>
element in web.config
file.') ?>