0

I found a very good code snippet to add a "base" into URL of blog posts: Custom permalink structure with a prefix just for posts

I tested it and it works great for post_type: post (to test it I created a "Must Use Plugin" in wp-content/mu-plugins/rewrite-me.php with the PHP code).

I tried to modify it for Media by changing post to attachment but it doesn't work... Could you please tell me what's wrong with it?

Ideally I don't want to use a plugin for this. I would like all attachments (media) links to have a base in URLs. For example image my-cat.jpg gets by default permalink/slug example.com/my-cat but I would prefer if it can get example.com/someprefix/my-cat. Could you please help me with that?

<?php

add_filter('pre_post_link', 'se332921_pre_post_link', 20, 3);
add_filter('post_rewrite_rules', 'se332921_post_rewrite_rules');

/**
 * @param string  $permalink The site's permalink structure.
 * @param WP_Post $post      The post in question.
 * @param bool    $leavename Whether to keep the post name.
 */
function se332921_pre_post_link($permalink, $post, $leavename)
{
    if ( $post instanceof WP_Post && $post->post_type == 'attachment')
        $permalink = '/attachment-prefix'.$permalink;
    return $permalink;
}

/**
 * @param array $post_rewrite The rewrite rules for posts.
 */
function se332921_post_rewrite_rules($post_rewrite)
{
    if ( is_array($post_rewrite) )
    {
        $rw_prefix = [];
        foreach( $post_rewrite as $k => $v) {
            $rw_prefix[ 'attachment-prefix/'.$k] = $v;
        }
        //
        // merge to keep original rules
        $post_rewrite = array_merge($rw_prefix, $post_rewrite);
        //
        // or return only prefixed:
        // $post_rewrite = $rw_prefix;
    }
    return $post_rewrite;
}

Thank you ;-).

Kind regards,

Ben

  • the documentation for pre_post_link says it only applies to posts of type post – Tom J Nowell Jul 31 at 12:13
  • Thank you Tom, you're right, I've just checked docs. The problem is that I can't find anything like pre_post_link that would work for attachment. Could you please let me know if you know about anything that would work for attachment? – Ben Hoven Aug 3 at 13:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.