관리-도구
편집 파일: options-permalink.php
<?php /** * Permalink Settings Administration Screen. * * @package SitePad * @subpackage Administration */ /** SitePad Administration Bootstrap */ require_once( dirname( __FILE__ ) . '/admin.php' ); if ( ! current_user_can( 'manage_options' ) ) { wp_die( __( 'Sorry, you are not allowed to manage options for this site.' ) ); } $title = __( 'Permalink Settings' ); $parent_file = 'options-general.php'; $home_path = get_home_path(); $iis7_permalinks = iis7_supports_permalinks(); $permalink_structure = get_option( 'permalink_structure' ); $prefix = $blog_prefix = ''; if ( ! got_url_rewrite() ) { $prefix = '/index.php'; } $category_base = get_option( 'category_base' ); $tag_base = get_option( 'tag_base' ); $update_required = false; $writable = false; $using_index_permalinks = $wp_rewrite->using_index_permalinks(); if ( isset( $_POST['permalink_structure'] ) || isset( $_POST['category_base'] ) ) { check_admin_referer( 'update-permalink' ); if ( isset( $_POST['permalink_structure'] ) ) { if ( isset( $_POST['selection'] ) && 'custom' != $_POST['selection'] ) { $permalink_structure = $_POST['selection']; } else { $permalink_structure = $_POST['permalink_structure']; } if ( ! empty( $permalink_structure ) ) { $permalink_structure = preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $permalink_structure ) ); if ( $prefix && $blog_prefix ) { $permalink_structure = $prefix . preg_replace( '#^/?index\.php#', '', $permalink_structure ); } else { $permalink_structure = $blog_prefix . $permalink_structure; } } $permalink_structure = sanitize_option( 'permalink_structure', $permalink_structure ); $wp_rewrite->set_permalink_structure( $permalink_structure ); } if ( isset( $_POST['category_base'] ) ) { $category_base = $_POST['category_base']; if ( ! empty( $category_base ) ) { $category_base = $blog_prefix . preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $category_base ) ); } $wp_rewrite->set_category_base( $category_base ); } if ( isset( $_POST['tag_base'] ) ) { $tag_base = $_POST['tag_base']; if ( ! empty( $tag_base ) ) { $tag_base = $blog_prefix . preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $tag_base ) ); } $wp_rewrite->set_tag_base( $tag_base ); } $message = __( 'Permalink structure updated.' ); // Flush rules and rebuild them flush_rewrite_rules(); if ( ! get_settings_errors() ) { add_settings_error( 'general', 'settings_updated', $message, 'updated' ); } set_transient( 'settings_errors', get_settings_errors(), 30 ); wp_redirect( admin_url( 'options-permalink.php?settings-updated=true' ) ); exit; } //flush_rewrite_rules(); require( ABSPATH . 'site-admin/admin-header.php' ); ?> <div class="wrap"> <h1><?php echo esc_html( $title ); ?></h1> <form name="form" action="options-permalink.php" method="post"> <?php wp_nonce_field( 'update-permalink' ); $structures = array( 0 => '', 1 => $prefix . '/%year%/%monthnum%/%day%/%postname%/', 2 => $prefix . '/%year%/%monthnum%/%postname%/', 3 => $prefix . '/' . _x( 'archives', 'sample permalink base' ) . '/%post_id%', 4 => $prefix . '/%postname%/', ); ?> <table class="form-table permalink-structure"> <tr> <th><label><input name="selection" type="radio" value="" <?php checked( '', $permalink_structure ); ?> /> <?php _e( 'Plain' ); ?></label></th> <td><code><?php echo get_option( 'home' ); ?>/?p=123</code></td> </tr> <tr> <th><label><input name="selection" type="radio" value="<?php echo esc_attr( $structures[1] ); ?>" <?php checked( $structures[1], $permalink_structure ); ?> /> <?php _e( 'Day and name' ); ?></label></th> <td><code><?php echo get_option( 'home' ) . $blog_prefix . $prefix . '/' . date( 'Y' ) . '/' . date( 'm' ) . '/' . date( 'd' ) . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/'; ?></code></td> </tr> <tr> <th><label><input name="selection" type="radio" value="<?php echo esc_attr( $structures[2] ); ?>" <?php checked( $structures[2], $permalink_structure ); ?> /> <?php _e( 'Month and name' ); ?></label></th> <td><code><?php echo get_option( 'home' ) . $blog_prefix . $prefix . '/' . date( 'Y' ) . '/' . date( 'm' ) . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/'; ?></code></td> </tr> <tr> <th><label><input name="selection" type="radio" value="<?php echo esc_attr( $structures[3] ); ?>" <?php checked( $structures[3], $permalink_structure ); ?> /> <?php _e( 'Numeric' ); ?></label></th> <td><code><?php echo get_option( 'home' ) . $blog_prefix . $prefix . '/' . _x( 'archives', 'sample permalink base' ) . '/123'; ?></code></td> </tr> <tr> <th><label><input name="selection" type="radio" value="<?php echo esc_attr( $structures[4] ); ?>" <?php checked( $structures[4], $permalink_structure ); ?> /> <?php _e( 'Post name' ); ?></label></th> <td><code><?php echo get_option( 'home' ) . $blog_prefix . $prefix . '/' . _x( 'sample-post', 'sample permalink structure' ) . '/'; ?></code></td> </tr> <tr> <th> <label><input name="selection" id="custom_selection" type="radio" value="custom" <?php checked( ! in_array( $permalink_structure, $structures ) ); ?> /> <?php _e( 'Custom Structure' ); ?> </label> </th> <td> <code><?php echo get_option( 'home' ) . $blog_prefix; ?></code> <input name="permalink_structure" id="permalink_structure" type="text" value="<?php echo esc_attr( $permalink_structure ); ?>" class="regular-text code" /> <div class="available-structure-tags hide-if-no-js"> <div id="custom_selection_updated" aria-live="assertive" class="screen-reader-text"></div> <?php $available_tags = array( /* translators: %s: permalink structure tag */ 'year' => __( '%s (The year of the post, four digits, for example 2004.)' ), /* translators: %s: permalink structure tag */ 'monthnum' => __( '%s (Month of the year, for example 05.)' ), /* translators: %s: permalink structure tag */ 'day' => __( '%s (Day of the month, for example 28.)' ), /* translators: %s: permalink structure tag */ 'hour' => __( '%s (Hour of the day, for example 15.)' ), /* translators: %s: permalink structure tag */ 'minute' => __( '%s (Minute of the hour, for example 43.)' ), /* translators: %s: permalink structure tag */ 'second' => __( '%s (Second of the minute, for example 33.)' ), /* translators: %s: permalink structure tag */ 'post_id' => __( '%s (The unique ID of the post, for example 423.)' ), /* translators: %s: permalink structure tag */ 'postname' => __( '%s (The sanitized post title (slug).)' ), /* translators: %s: permalink structure tag */ 'category' => __( '%s (Category slug. Nested sub-categories appear as nested directories in the URL.)' ), /* translators: %s: permalink structure tag */ 'author' => __( '%s (A sanitized version of the author name.)' ), ); /** * Filters the list of available permalink structure tags on the Permalinks settings page. * * @since 4.8.0 * * @param string[] $available_tags An array of key => value pairs of available permalink structure tags. */ $available_tags = apply_filters( 'available_permalink_structure_tags', $available_tags ); /* translators: %s: permalink structure tag */ $structure_tag_added = __( '%s added to permalink structure' ); /* translators: %s: permalink structure tag */ $structure_tag_already_used = __( '%s (already used in permalink structure)' ); if ( ! empty( $available_tags ) ) : ?> <p><?php _e( 'Available tags:' ); ?></p> <ul role="list"> <?php foreach ( $available_tags as $tag => $explanation ) { ?> <li> <button type="button" class="button button-secondary" aria-label="<?php echo esc_attr( sprintf( $explanation, $tag ) ); ?>" data-added="<?php echo esc_attr( sprintf( $structure_tag_added, $tag ) ); ?>" data-used="<?php echo esc_attr( sprintf( $structure_tag_already_used, $tag ) ); ?>"> <?php echo '%' . $tag . '%'; ?> </button> </li> <?php } ?> </ul> <?php endif; ?> </div> </td> </tr> </table> <h2 class="title"><?php _e( 'Optional' ); ?></h2> <p> <?php /* translators: %s: placeholder that must come at the start of the URL */ printf( __( 'If you like, you may enter custom structures for your category and tag URLs here. For example, using <code>topics</code> as your category base would make your category links like <code>%s/topics/uncategorized/</code>. If you leave these blank the defaults will be used.' ), get_option( 'home' ) . $blog_prefix . $prefix ); ?> </p> <table class="form-table"> <tr> <th><label for="category_base"><?php /* translators: prefix for category permalinks */ _e( 'Category base' ); ?></label></th> <td><?php echo $blog_prefix; ?> <input name="category_base" id="category_base" type="text" value="<?php echo esc_attr( $category_base ); ?>" class="regular-text code" /></td> </tr> <tr> <th><label for="tag_base"><?php _e( 'Tag base' ); ?></label></th> <td><?php echo $blog_prefix; ?> <input name="tag_base" id="tag_base" type="text" value="<?php echo esc_attr( $tag_base ); ?>" class="regular-text code" /></td> </tr> <?php do_settings_fields( 'permalink', 'optional' ); ?> </table> <?php do_settings_sections( 'permalink' ); ?> <?php submit_button(); ?> </form> </div> <?php require( ABSPATH . 'site-admin/admin-footer.php' ); ?>