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.