Post format indexes. First pass. see #15378.
git-svn-id: http://svn.automattic.com/wordpress/trunk@16705 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -5067,6 +5067,23 @@ function get_post_format_strings() {
|
||||
return $strings;
|
||||
}
|
||||
|
||||
function get_post_format_slugs() {
|
||||
$slugs = array(
|
||||
'default' => _x( 'default', 'Post format slug' ),
|
||||
'aside' => _x( 'aside', 'Post format slug' ),
|
||||
'chat' => _x( 'chat', 'Post format slug' ),
|
||||
'gallery' => _x( 'gallery', 'Post format slug' ),
|
||||
'link' => _x( 'link', 'Post format slug' ),
|
||||
'image' => _x( 'image', 'Post format slug' ),
|
||||
'quote' => _x( 'quote', 'Post format slug' ),
|
||||
'status' => _x( 'status', 'Post format slug' ),
|
||||
'video' => _x( 'video', 'Post format slug' ),
|
||||
'audio' => _x( 'audio', 'Post format slug' ),
|
||||
);
|
||||
$slugs = array_map( 'sanitize_title_with_dashes', $slugs );
|
||||
return $slugs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a pretty, translated version of a post format slug
|
||||
*
|
||||
@@ -5105,4 +5122,55 @@ function set_post_thumbnail( $post, $thumbnail_id ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a link to a post format index.
|
||||
*
|
||||
* @since 3.1.0
|
||||
*
|
||||
* @param $format string Post format
|
||||
* @return string Link
|
||||
*/
|
||||
function get_post_format_link( $format ) {
|
||||
$term = get_term_by('slug', 'post-format-' . $format, 'post_format' );
|
||||
if ( ! $term || is_wp_error( $term ) )
|
||||
return false;
|
||||
return get_term_link( $term );
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters the request to allow for the format prefix.
|
||||
*
|
||||
* @access private
|
||||
* @since 3.1.0
|
||||
*/
|
||||
function _post_format_request( $qvs ) {
|
||||
if ( ! isset( $qvs['post_format'] ) )
|
||||
return $qvs;
|
||||
$slugs = array_flip( get_post_format_slugs() );
|
||||
if ( isset( $slugs[ $qvs['post_format'] ] ) )
|
||||
$qvs['post_format'] = 'post-format-' . $slugs[ $qvs['post_format'] ];
|
||||
return $qvs;
|
||||
}
|
||||
add_filter( 'request', '_post_format_request' );
|
||||
|
||||
/**
|
||||
* Filters the post format term link to remove the format prefix.
|
||||
*
|
||||
* @access private
|
||||
* @since 3.1.0
|
||||
*/
|
||||
function _post_format_link( $link, $term, $taxonomy ) {
|
||||
global $wp_rewrite;
|
||||
if ( 'post_format' != $taxonomy )
|
||||
return $link;
|
||||
$slugs = get_post_format_slugs();
|
||||
if ( $wp_rewrite->get_extra_permastruct( $taxonomy ) ) {
|
||||
return str_replace( "/{$term->slug}", '/' . $slugs[ str_replace( 'post-format-', '', $term->slug ) ], $link );
|
||||
} else {
|
||||
$link = remove_query_arg( 'format', $link );
|
||||
return add_query_arg( 'format', str_replace( 'post-format-', $term->slug ), $link );
|
||||
}
|
||||
}
|
||||
add_filter( 'term_link', '_post_format_link', 10, 3 );
|
||||
|
||||
?>
|
||||
|
||||
@@ -19,10 +19,10 @@ function create_initial_taxonomies() {
|
||||
'hierarchical' => true,
|
||||
'update_count_callback' => '_update_post_term_count',
|
||||
'query_var' => 'category_name',
|
||||
'rewrite' => array(
|
||||
'rewrite' => did_action( 'init' ) ? array(
|
||||
'hierarchical' => true,
|
||||
'slug' => get_option('category_base') ? get_option('category_base') : 'category',
|
||||
'with_front' => false),
|
||||
'with_front' => false) : false,
|
||||
'public' => true,
|
||||
'show_ui' => true,
|
||||
'_builtin' => true,
|
||||
@@ -32,9 +32,9 @@ function create_initial_taxonomies() {
|
||||
'hierarchical' => false,
|
||||
'update_count_callback' => '_update_post_term_count',
|
||||
'query_var' => 'tag',
|
||||
'rewrite' => array(
|
||||
'slug' => get_option('tag_base') ? get_option('tag_base') : 'tag' ,
|
||||
'with_front' => false),
|
||||
'rewrite' => did_action( 'init' ) ? array(
|
||||
'slug' => get_option('tag_base') ? get_option('tag_base') : 'tag',
|
||||
'with_front' => false) : false,
|
||||
'public' => true,
|
||||
'show_ui' => true,
|
||||
'_builtin' => true,
|
||||
@@ -52,7 +52,7 @@ function create_initial_taxonomies() {
|
||||
'show_ui' => false,
|
||||
'_builtin' => true,
|
||||
'show_in_nav_menus' => false,
|
||||
) ) ;
|
||||
) );
|
||||
|
||||
register_taxonomy( 'link_category', 'link', array(
|
||||
'hierarchical' => false,
|
||||
@@ -75,21 +75,27 @@ function create_initial_taxonomies() {
|
||||
'public' => false,
|
||||
'show_ui' => false,
|
||||
'_builtin' => true,
|
||||
) ) ;
|
||||
) );
|
||||
|
||||
$rewrite = false;
|
||||
if ( did_action( 'init' ) && current_theme_supports( 'post-formats' ) ) {
|
||||
$rewrite = apply_filters( 'post_format_rewrite_base', 'type' );
|
||||
$rewrite = $rewrite ? array( 'slug' => $rewrite ) : false;
|
||||
}
|
||||
|
||||
register_taxonomy( 'post_format', 'post', array(
|
||||
'public' => false,
|
||||
'public' => true,
|
||||
'hierarchical' => false,
|
||||
'labels' => array(
|
||||
'name' => '',
|
||||
'singular_name' => '',
|
||||
),
|
||||
'query_var' => false,
|
||||
'rewrite' => false,
|
||||
'query_var' => 'post_format',
|
||||
'rewrite' => $rewrite,
|
||||
'show_ui' => false,
|
||||
'_builtin' => true,
|
||||
'show_in_nav_menus' => false,
|
||||
) ) ;
|
||||
) );
|
||||
}
|
||||
add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority
|
||||
|
||||
@@ -310,7 +316,7 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
|
||||
$wp->add_query_var($args['query_var']);
|
||||
}
|
||||
|
||||
if ( false !== $args['rewrite'] && '' != get_option('permalink_structure') && !empty($wp_rewrite) ) {
|
||||
if ( false !== $args['rewrite'] && '' != get_option('permalink_structure') ) {
|
||||
$args['rewrite'] = wp_parse_args($args['rewrite'], array(
|
||||
'slug' => sanitize_title_with_dashes($taxonomy),
|
||||
'with_front' => true,
|
||||
|
||||
Reference in New Issue
Block a user