get_the_content( string $more_link_text = null, bool $strip_teaser = false, WP_Post|object|int $post = null )
Retrieve the post content.
Contents
Description Description
Parameters Parameters
- $more_link_text
-
(string) (Optional) Content for when there is more text.
Default value: null
- $strip_teaser
-
(bool) (Optional) Strip teaser content before the more text. Default is false.
Default value: false
- $post
-
(WP_Post|object|int) (Optional) WP_Post instance or Post ID/object. Default is null.
Default value: null
Return Return
(string)
Source Source
File: wp-includes/post-template.php
function get_the_content( $more_link_text = null, $strip_teaser = false, $post = null ) { global $page, $more, $preview, $pages, $multipage; $_post = get_post( $post ); if ( ! ( $_post instanceof WP_Post ) ) { return ''; } if ( null === $post ) { $elements = compact( 'page', 'more', 'preview', 'pages', 'multipage' ); } else { $elements = generate_postdata( $_post ); } if ( null === $more_link_text ) { $more_link_text = sprintf( '<span aria-label="%1$s">%2$s</span>', sprintf( /* translators: %s: Post title. */ __( 'Continue reading %s' ), the_title_attribute( array( 'echo' => false, 'post' => $_post, ) ) ), __( '(more…)' ) ); } $output = ''; $has_teaser = false; // If post password required and it doesn't match the cookie. if ( post_password_required( $_post ) ) { return get_the_password_form( $_post ); } if ( $elements['page'] > count( $elements['pages'] ) ) { // if the requested page doesn't exist $elements['page'] = count( $elements['pages'] ); // give them the highest numbered page that DOES exist } $page_no = $elements['page']; $content = $elements['pages'][ $page_no - 1 ]; if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) { if ( has_block( 'more', $content ) ) { // Remove the core/more block delimiters. They will be left over after $content is split up. $content = preg_replace( '/<!-- \/?wp:more(.*?) -->/', '', $content ); } $content = explode( $matches[0], $content, 2 ); if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) ) { $more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) ); } $has_teaser = true; } else { $content = array( $content ); } if ( false !== strpos( $_post->post_content, '<!--noteaser-->' ) && ( ! $elements['multipage'] || $elements['page'] == 1 ) ) { $strip_teaser = true; } $teaser = $content[0]; if ( $elements['more'] && $strip_teaser && $has_teaser ) { $teaser = ''; } $output .= $teaser; if ( count( $content ) > 1 ) { if ( $elements['more'] ) { $output .= '<span id="more-' . $_post->ID . '"></span>' . $content[1]; } else { if ( ! empty( $more_link_text ) ) { /** * Filters the Read More link text. * * @since 2.8.0 * * @param string $more_link_element Read More link element. * @param string $more_link_text Read More text. */ $output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink( $_post ) . "#more-{$_post->ID}\" class=\"more-link\">$more_link_text</a>", $more_link_text ); } $output = force_balance_tags( $output ); } } return $output; }
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
5.2.0 | Added the $post parameter. |
0.71 | Introduced. |
More Information More Information
When used inside The Loop, this function will get the content of the current post.
If used outside The Loop, you must inform the post you want to get the content from using the optional $post
parameter.
An important difference from the_content()
is that get_the_content()
does not pass the content through the the_content
filter. This means that get_the_content()
will not auto-embed videos or expand shortcodes, among other things.
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Note that
get_the_content
doesn’t return the same thing as whatthe_content
displays. For that you need to do this:Basic Usage
Display the post content, ending with “Read more” if needed
find out if the_content has content before output
in functions.php and similar files:
as function
template inside the loop:
If you use
get_the_content()
before the global $wp_query object is set, the postmeta are not well generated becausegenerate_postdata()
use $wp_query.To get around this issue, just construct a global $wp_query object before calling
get_the_content()