Question

I'm trying to do some WordPress URL rewriting ...

Specifically I have custom post type that currently works like this:

http://mydomain.com/videos/post-title/

But I would like to have it located at:

http://mydomain.com/videos/author-name/post-title/

Is there any way to achieve this?

Was it helpful?

Solution

using Jhon's Custom Post Permalinks plugin it should be easy using:

/%post_type%/%author%/%postname%/

OTHER TIPS

You can do this with your own code, without plugins.

To accept URLs of this format, it's enough if you set the rewrite slug when you register the post type:

add_action( 'init', 'wpse16427_init' );
function wpse16427_init()
{
    register_post_type( 'wpse16427', array(
        'label' => 'WPSE 16427',
        'public' => true,
        'rewrite' => array(
            'slug' => 'video/%author%',
        ),
    ) );
}

This will also generate author archives at video/[authorname].

To generate the new URLs, you need to replace the %author% part yourself, get_post_permalink() does not do this for you. So filter the output and replace it yourself:

add_filter( 'post_type_link', 'wpse16427_post_type_link', 10, 4 );
function wpse16427_post_type_link( $post_link, $post, $leavename, $sample )
{
    if ( 'wpse16427' == $post->post_type ) {
        $authordata = get_userdata( $post->post_author );
        $author = $authordata->user_nicename;
        $post_link = str_replace( '%author%', $author, $post_link );
    }
    return $post_link;
}

goto the permalinks section on the settings in the admin panel, set a custom structure like so:

/%category%/%author%/%postname%/

NOTE

this assumes videos is a category

Check here for more options.

use the following structure if you installed wordpress in a subdirectory (videos)

/%author%/%postname%/

Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top