the_title( string $before = , string $after = , bool $display = true ): void|string

Displays or retrieves the current post title with optional markup.


Markup to prepend to the title.


Markup to append to the title.


Whether to echo or return the title. Default true for echo.



void|string Void if $display argument is true or the title is empty, current post title if $display is false.

More Information

This function displays or returns the unescaped title of the current post. This tag may only be used within The Loop, to get the title of a post outside of the loop use get_the_title. If the post is protected or private, this will be noted by the words “Protected: ” or “Private: ” prepended to the title.

Security considerations

Like the_content() , the output of the_title() is unescaped. This is considered a feature and not a bug, see the FAQ “Why are some users allowed to post unfiltered HTML?” . If the post title is <script>alert("test");</script>, then that JavaScript code will be run wherever the_title() is used. For this reason, do not write code that allows untrusted users to create post titles.


function the_title( $before = '', $after = '', $display = true ) {
	$title = get_the_title();

	if ( strlen( $title ) === 0 ) {

	$title = $before . $title . $after;

	if ( $display ) {
		echo $title;
	} else {
		return $title;



User Contributed Notes

You must log in before being able to contribute a note or feedback.