Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
635 views
in Technique[技术] by (71.8m points)

php - WordPress: difference between get_the_content() and the_content()

I was working on the new theme in the WordPress and spent tons of time with the get_the_content() function.

  <div class="clearfix">
      <div>
        <p><?=get_the_content();?></p>
      </div>
  </div>

Seems that it doesn't process shortcuts and doesn't do paragraphs.

Then I replaced it with the the_content(); and my paragraphs and shortcuts started to work.

  <div class="clearfix">
      <div>
        <p><?=the_content();?></p>
      </div>
  </div>

My question: What is the difference between the functions and what additional processing the_content(); does comparing to get_the_content();?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

While @J Quest provided an adequate answer, I'd like to elaborate a little bit. Generally speaking, WordPress has two types of post variable functions: get_ functions and the_ functions.

get_ functions, such as get_the_content() or get_the_ID()will return the desired information, which must then be manipulated and printed to the page. Some examples:

$content = get_the_content();
$content = apply_filters( 'the_content', $content );
$content = str_replace( 'foo', 'bar', $content );

echo 'Post #'. get_the_ID() . $content;

the_ functions, such as the_content() and the_ID() actually echo the returned value, and if applicable will apply the "default filters" for the appropriate values. These functions don't need to be echoed.

echo get_the_ID();

is functionally the same as

the_ID();

If you look at the docs for the_ID() you'll see it literally just outputs the value of get_the_ID(). From the source:

function the_ID() {
    echo get_the_ID();
}

In that vein, if you try and set the_ functions as a variable, you'll leave a trail of echoed variables throughout the page.

$id = the_ID();
echo 'Post ID: '.$id;

will output:

123Post ID: 123

To use get_the_content() and get shortcodes to run, you'll either need to run it through the do_shortcode() function, or better yet the_content filter.

$content = get_the_content();

echo do_shortcode( $content );
// Or:    
echo apply_filters( 'the_content', $content );

If you just need to spit out post content in a template, without any manipulation, you're typically better off with (no echo or echo short tag):

the_content();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...