Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- http://example.com/link/look-at-this-cool-site/
- http://example.com/quote/example-quote-post
- http://example.com/just-another-post
- <?php
- /**
- * Plugin Name: Post Format Permalink
- * Plugin URI: https://wordpress.stackexchange.com/q/70627/19726
- * Description: Include the post format slug in your permalinks. Simply use the <code>%post_format%</code> tag as part of your custom permalink.
- * Version: 1.2
- * Author: shea
- * Author URI: https://wordpress.stackexchange.com/users/19726
- */
- add_filter( 'post_link', 'post_format_permalink', 10, 2 );
- add_filter( 'post_type_link', 'post_format_permalink', 10, 2 );
- function post_format_permalink( $permalink, $post_id ) {
- // if we're not using the %post_format% tag in our permalinks, bail early
- if ( strpos($permalink, '%post_format%') === FALSE ) return $permalink;
- // get the post object
- $post = get_post( $post_id );
- if ( ! $post ) return $permalink;
- // get post format slug
- $format = get_post_format( $post->ID );
- // set the slug for standard posts
- if ( empty( $format ) )
- $format = apply_filters( 'post_format_standard_slug', 'standard' );
- // apply the post format slug to the permalink
- return str_replace( '%post_format%', $format, $permalink );
- }
- <?php
- /**
- * Plugin Name: Post Format Permalink
- * Description: Allow to use Post Format as Permalink; inlcude %postformat% in custom permalink
- */
- class Fb_Add_Post_Format_Permalink {
- function __construct() {
- add_filter( 'pre_post_link', array( $this, 'generate_permalink' ), 10, 2 );
- add_filter( 'post_rewrite_rules', array( $this, 'rewrite_rules' ) );
- add_filter( 'generate_rewrite_rules', array( $this, 'generate_rewrite_rules' ) );
- }
- function generate_permalink( $permalink, $post ) {
- global $standard_slug;
- if ( FALSE === strpos( $permalink, '%postformat%' ) )
- return $permalink;
- if ( ! is_object( $post ) )
- $post = get_post( $post_id );
- $postformat = get_post_format( $post->ID );
- if ( empty( $postformat ) )
- $postformat = ! empty($standard_slug) ? $standard_slug : 'standard';
- return str_replace( '%postformat%', $postformat, $permalink );
- }
- function generate_rewrite_rules( $wp_rewrite ) {
- global $clean_post_rewrites;
- $wp_rewrite->rules = $wp_rewrite->rules + $clean_post_rewrites;
- }
- function rewrite_rules( $post_rewrite ) {
- global $clean_post_rewrites, $wp_rewrite, $standard_slug;
- $wp_rewrite->use_verbose_page_rules = TRUE;
- $post_format_slugs = implode( '|', get_post_format_slugs() );
- if ( ! empty($standard_slug) )
- $post_format_slugs = preg_replace( '|standard|', $standard_slug, $post_format_slugs, 1 );
- while ( list($k, $v) = each( $post_rewrite ) ) {
- $new_k = preg_replace( '|%postformat%|', '(' . $post_format_slugs . ')', $k, 1 );
- $clean_post_rewrites[$new_k] = $v;
- }
- return $post_rewrite;
- }
- }
- $post_format = new Fb_Add_Post_Format_Permalink();
Add Comment
Please, Sign In to add comment