0

I want to customize the output of the permalink for a custom post type, but I want the permalink to still be editable when editing a post. I'm using the post_type_link filter:

add_filter( 'post_type_link', function( $post_link, $post, $leavename, $sample ) {
    if ( 'job' == $post->post_type ) {
        $post_link = 'http://localhost:8888/testsite/job/' . $post->post_name . '/';
    }
    return $post_link;
}, 10, 4 );

When this filter is active, it no longer shows the "Edit" button next to the permalink when editing the post. Even if I remove the custom permalink stuff and only have return $post_link; it still disables editing of the permalink.

How can I customize the output and still keep the permalink editable?

2
  • If the post type slug is job, then the default permalink structure should be job/<post slug>, so why are you manually customizing it via that filter?
    – Sally CJ
    May 24, 2020 at 11:12
  • @SallyCJ this is just a test to get it working first, then I'll customize the URL once editing of the slug is working. Sorry, should've mentioned that in the original question.
    – Gavin
    May 24, 2020 at 11:37

1 Answer 1

4

How can I customize the output and still keep the permalink editable?

The following worked for me:

$post_link = home_url( '/job/' . ( $leavename ? '%postname%' : $post->post_name ) . '/' );

I.e. If the $leavename is true, use %postname% in the URL. Otherwise, you may then use the actual post name/slug, i.e. the value of the $post->post_name.

Additionally, I suggest you to use home_url() than hard-coding the site URL into the permalink. :)

And I presume you will or have already setup the rewrite rules for the permalinks (/job/<post slug>/ in the above example)?

Even if I remove the custom permalink stuff and only have return $post_link; it still disables editing of the permalink.

I'm not getting that issue, so it's probably a theme/plugin conflict on your site — try deactivating plugins and enable them back one at a time until you've found the culprit.

2
  • 1
    That worked great! Thanks!
    – Gavin
    May 25, 2020 at 14:13
  • 1
    This also fixed my issue. Thank you!
    – EmilyH
    Sep 2, 2021 at 20:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.