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?
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?
Share Improve this question asked May 24, 2020 at 10:41 GavinGavin 4247 silver badges21 bronze badges 2 |1 Answer
Reset to default 5How 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.
job
, then the default permalink structure should bejob/<post slug>
, so why are you manually customizing it via that filter? – Sally CJ Commented May 24, 2020 at 11:12