The ‘private_title_format’ filter allows you to modify the text that is prepended to the title of private posts in WordPress.
This filter is only applied on the front end.
Usage
add_filter( 'private_title_format', 'custom_private_title_format', 10, 2 );
function custom_private_title_format( $prepend, $post ) {
// Your code here
return $modified_prepend;
}
Parameters
$prepend(string)- Text displayed before the post title
- Default value:
'Private: %s'
$post(WP_Post)- Current post object
Examples
Change the prefix text for private posts
add_filter( 'private_title_format', 'change_private_title_prefix', 10, 2 );
function change_private_title_prefix( $prepend, $post ) {
return '[Restricted] %s';
}
In this example, the private post title prefix is changed from the default ‘Private: ‘ to ‘[Restricted] ‘.
Display private posts without a prefix
add_filter( 'private_title_format', 'remove_private_title_prefix', 10, 2 );
function remove_private_title_prefix( $prepend, $post ) {
return '%s';
}
This code removes the prefix text for private posts, displaying only the post title.
Add custom prefix for specific post type
add_filter( 'private_title_format', 'custom_private_title_prefix_for_post_type', 10, 2 );
function custom_private_title_prefix_for_post_type( $prepend, $post ) {
if ( $post->post_type === 'custom_post_type' ) {
return '[Custom] %s';
}
return $prepend;
}
In this example, the prefix for private posts of the custom post type ‘custom_post_type’ is changed to ‘[Custom] ‘.
Change the prefix based on post category
add_filter( 'private_title_format', 'change_private_title_prefix_by_category', 10, 2 );
function change_private_title_prefix_by_category( $prepend, $post ) {
$categories = get_the_category( $post->ID );
foreach ( $categories as $category ) {
if ( $category->slug === 'premium' ) {
return '[Premium] %s';
}
}
return $prepend;
}
This code changes the private post title prefix to ‘[Premium] ‘ if the post is in the ‘premium’ category.
Use post author’s display name as the prefix
add_filter( 'private_title_format', 'use_author_name_as_private_title_prefix', 10, 2 );
function use_author_name_as_private_title_prefix( $prepend, $post ) {
$author_name = get_the_author_meta( 'display_name', $post->post_author );
return $author_name . ': %s';
}
This example sets the private post title prefix to the author’s display name followed by a colon.