Now tag pretty permalinks should work, and support custom tag bases.
git-svn-id: http://svn.automattic.com/wordpress/trunk@5150 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
14f1c622ff
commit
c86599b85c
|
@ -73,10 +73,18 @@ if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) {
|
||||||
$category_base = preg_replace('#/+#', '/', '/' . $_POST['category_base']);
|
$category_base = preg_replace('#/+#', '/', '/' . $_POST['category_base']);
|
||||||
$wp_rewrite->set_category_base($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 = preg_replace('#/+#', '/', '/' . $_POST['tag_base']);
|
||||||
|
$wp_rewrite->set_tag_base($tag_base);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$permalink_structure = get_option('permalink_structure');
|
$permalink_structure = get_option('permalink_structure');
|
||||||
$category_base = get_option('category_base');
|
$category_base = get_option('category_base');
|
||||||
|
$tag_base = get_option( 'tag_base' );
|
||||||
|
|
||||||
if ( (!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess') )
|
if ( (!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess') )
|
||||||
$writable = true;
|
$writable = true;
|
||||||
|
@ -159,6 +167,9 @@ checked="checked"
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<p>
|
<p>
|
||||||
<?php _e('Category base'); ?>: <input name="category_base" type="text" class="code" value="<?php echo attribute_escape($category_base); ?>" size="30" />
|
<?php _e('Category base'); ?>: <input name="category_base" type="text" class="code" value="<?php echo attribute_escape($category_base); ?>" size="30" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<?php _e('Tag base'); ?>: <input name="tag_base" type="text" class="code" value="<?php echo attribute_escape($tag_base); ?>" size="30" />
|
||||||
</p>
|
</p>
|
||||||
<p class="submit">
|
<p class="submit">
|
||||||
<input type="submit" name="submit" value="<?php _e('Update Permalink Structure »') ?>" />
|
<input type="submit" name="submit" value="<?php _e('Update Permalink Structure »') ?>" />
|
||||||
|
|
|
@ -242,6 +242,9 @@ function populate_options() {
|
||||||
add_option('default_link_category', 2);
|
add_option('default_link_category', 2);
|
||||||
add_option('show_on_front', 'posts');
|
add_option('show_on_front', 'posts');
|
||||||
|
|
||||||
|
// 2.2
|
||||||
|
add_option('tag_base');
|
||||||
|
|
||||||
// Delete unused options
|
// Delete unused options
|
||||||
$unusedoptions = array ('blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', '_wp_http_referer', 'Update', 'action', 'rich_editing');
|
$unusedoptions = array ('blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', '_wp_http_referer', 'Update', 'action', 'rich_editing');
|
||||||
foreach ($unusedoptions as $option) :
|
foreach ($unusedoptions as $option) :
|
||||||
|
|
|
@ -42,7 +42,7 @@ function get_category_link($category_id) {
|
||||||
|
|
||||||
function get_tag_link( $tag_id ) {
|
function get_tag_link( $tag_id ) {
|
||||||
global $wp_rewrite;
|
global $wp_rewrite;
|
||||||
$catlink = $wp_rewrite->get_category_permastruct();
|
$catlink = $wp_rewrite->get_tag_permastruct();
|
||||||
|
|
||||||
$category = &get_category($tag_id);
|
$category = &get_category($tag_id);
|
||||||
$category_nicename = $category->category_nicename;
|
$category_nicename = $category->category_nicename;
|
||||||
|
|
|
@ -670,7 +670,7 @@ function update_post_category_cache($post_ids) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_post_caches(&$posts) {
|
function update_post_caches(&$posts) {
|
||||||
global $post_cache, $category_cache, $post_meta_cache;
|
global $post_cache, $category_cache, $post_meta_cache, $tag_cache;
|
||||||
global $wpdb, $blog_id;
|
global $wpdb, $blog_id;
|
||||||
|
|
||||||
// No point in doing all this work if we didn't match any posts.
|
// No point in doing all this work if we didn't match any posts.
|
||||||
|
|
|
@ -59,6 +59,7 @@ function get_permalink($id = 0) {
|
||||||
'%postname%',
|
'%postname%',
|
||||||
'%post_id%',
|
'%post_id%',
|
||||||
'%category%',
|
'%category%',
|
||||||
|
'%tag%',
|
||||||
'%author%',
|
'%author%',
|
||||||
'%pagename%'
|
'%pagename%'
|
||||||
);
|
);
|
||||||
|
|
|
@ -46,11 +46,12 @@ define('EP_ROOT', 64 );
|
||||||
define('EP_COMMENTS', 128 );
|
define('EP_COMMENTS', 128 );
|
||||||
define('EP_SEARCH', 256 );
|
define('EP_SEARCH', 256 );
|
||||||
define('EP_CATEGORIES', 512 );
|
define('EP_CATEGORIES', 512 );
|
||||||
define('EP_AUTHORS', 1024);
|
define('EP_TAGS', 1024 );
|
||||||
define('EP_PAGES', 2048);
|
define('EP_AUTHORS', 2048);
|
||||||
|
define('EP_PAGES', 4096);
|
||||||
//pseudo-places
|
//pseudo-places
|
||||||
define('EP_NONE', 0 );
|
define('EP_NONE', 0 );
|
||||||
define('EP_ALL', 4095);
|
define('EP_ALL', 8191);
|
||||||
|
|
||||||
//and an endpoint, like /trackback/
|
//and an endpoint, like /trackback/
|
||||||
function add_rewrite_endpoint($name, $places) {
|
function add_rewrite_endpoint($name, $places) {
|
||||||
|
@ -150,7 +151,9 @@ class WP_Rewrite {
|
||||||
var $permalink_structure;
|
var $permalink_structure;
|
||||||
var $use_trailing_slashes;
|
var $use_trailing_slashes;
|
||||||
var $category_base;
|
var $category_base;
|
||||||
|
var $tag_base;
|
||||||
var $category_structure;
|
var $category_structure;
|
||||||
|
var $tag_structure;
|
||||||
var $author_base = 'author';
|
var $author_base = 'author';
|
||||||
var $author_structure;
|
var $author_structure;
|
||||||
var $date_structure;
|
var $date_structure;
|
||||||
|
@ -181,6 +184,7 @@ class WP_Rewrite {
|
||||||
'%postname%',
|
'%postname%',
|
||||||
'%post_id%',
|
'%post_id%',
|
||||||
'%category%',
|
'%category%',
|
||||||
|
'%tag%',
|
||||||
'%author%',
|
'%author%',
|
||||||
'%pagename%',
|
'%pagename%',
|
||||||
'%search%'
|
'%search%'
|
||||||
|
@ -197,6 +201,7 @@ class WP_Rewrite {
|
||||||
'([^/]+)',
|
'([^/]+)',
|
||||||
'([0-9]+)',
|
'([0-9]+)',
|
||||||
'(.+?)',
|
'(.+?)',
|
||||||
|
'(.+?)',
|
||||||
'([^/]+)',
|
'([^/]+)',
|
||||||
'([^/]+)',
|
'([^/]+)',
|
||||||
'(.+)'
|
'(.+)'
|
||||||
|
@ -213,6 +218,7 @@ class WP_Rewrite {
|
||||||
'name=',
|
'name=',
|
||||||
'p=',
|
'p=',
|
||||||
'category_name=',
|
'category_name=',
|
||||||
|
'tag=',
|
||||||
'author_name=',
|
'author_name=',
|
||||||
'pagename=',
|
'pagename=',
|
||||||
's='
|
's='
|
||||||
|
@ -378,6 +384,26 @@ class WP_Rewrite {
|
||||||
return $this->category_structure;
|
return $this->category_structure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_tag_permastruct() {
|
||||||
|
if (isset($this->tag_structure)) {
|
||||||
|
return $this->tag_structure;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($this->permalink_structure)) {
|
||||||
|
$this->tag_structure = '';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($this->tag_base))
|
||||||
|
$this->tag_structure = $this->front . 'tag/';
|
||||||
|
else
|
||||||
|
$this->tag_structure = $this->tag_base . '/';
|
||||||
|
|
||||||
|
$this->tag_structure .= '%tag%';
|
||||||
|
|
||||||
|
return $this->tag_structure;
|
||||||
|
}
|
||||||
|
|
||||||
function get_author_permastruct() {
|
function get_author_permastruct() {
|
||||||
if (isset($this->author_structure)) {
|
if (isset($this->author_structure)) {
|
||||||
return $this->author_structure;
|
return $this->author_structure;
|
||||||
|
@ -734,6 +760,10 @@ class WP_Rewrite {
|
||||||
$category_rewrite = $this->generate_rewrite_rules($this->get_category_permastruct(), EP_CATEGORIES);
|
$category_rewrite = $this->generate_rewrite_rules($this->get_category_permastruct(), EP_CATEGORIES);
|
||||||
$category_rewrite = apply_filters('category_rewrite_rules', $category_rewrite);
|
$category_rewrite = apply_filters('category_rewrite_rules', $category_rewrite);
|
||||||
|
|
||||||
|
// Tags
|
||||||
|
$tag_rewrite = $this->generate_rewrite_rules($this->get_tag_permastruct(), EP_TAGS);
|
||||||
|
$tag_rewrite = apply_filters('tag_rewrite_rules', $tag_rewrite);
|
||||||
|
|
||||||
// Authors
|
// Authors
|
||||||
$author_rewrite = $this->generate_rewrite_rules($this->get_author_permastruct(), EP_AUTHORS);
|
$author_rewrite = $this->generate_rewrite_rules($this->get_author_permastruct(), EP_AUTHORS);
|
||||||
$author_rewrite = apply_filters('author_rewrite_rules', $author_rewrite);
|
$author_rewrite = apply_filters('author_rewrite_rules', $author_rewrite);
|
||||||
|
@ -743,7 +773,7 @@ class WP_Rewrite {
|
||||||
$page_rewrite = apply_filters('page_rewrite_rules', $page_rewrite);
|
$page_rewrite = apply_filters('page_rewrite_rules', $page_rewrite);
|
||||||
|
|
||||||
// Put them together.
|
// Put them together.
|
||||||
$this->rules = array_merge($robots_rewrite, $default_feeds, $page_rewrite, $root_rewrite, $comments_rewrite, $search_rewrite, $category_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $this->extra_rules);
|
$this->rules = array_merge($robots_rewrite, $default_feeds, $page_rewrite, $root_rewrite, $comments_rewrite, $search_rewrite, $category_rewrite, $tag_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $this->extra_rules);
|
||||||
|
|
||||||
do_action_ref_array('generate_rewrite_rules', array(&$this));
|
do_action_ref_array('generate_rewrite_rules', array(&$this));
|
||||||
$this->rules = apply_filters('rewrite_rules_array', $this->rules);
|
$this->rules = apply_filters('rewrite_rules_array', $this->rules);
|
||||||
|
@ -869,7 +899,8 @@ class WP_Rewrite {
|
||||||
if ($this->using_index_permalinks()) {
|
if ($this->using_index_permalinks()) {
|
||||||
$this->root = $this->index . '/';
|
$this->root = $this->index . '/';
|
||||||
}
|
}
|
||||||
$this->category_base = get_option('category_base');
|
$this->category_base = get_option( 'category_base' );
|
||||||
|
$this->tag_base = get_option( 'tag_base' );
|
||||||
unset($this->category_structure);
|
unset($this->category_structure);
|
||||||
unset($this->author_structure);
|
unset($this->author_structure);
|
||||||
unset($this->date_structure);
|
unset($this->date_structure);
|
||||||
|
@ -894,9 +925,16 @@ class WP_Rewrite {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function set_tag_base( $tag_base ) {
|
||||||
|
if ( $tag_base != $this->tag_base ) {
|
||||||
|
update_option( 'tag_base', $tag_base );
|
||||||
|
$this->init();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function WP_Rewrite() {
|
function WP_Rewrite() {
|
||||||
$this->init();
|
$this->init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
Loading…
Reference in New Issue