我对
get_the_*
和 the_*
模板标签感到困惑。我已经在我的主题中使用了很多次,但我不太清楚何时使用 get_the_*
以及何时使用 the_*
。请您清楚地解释这两个概念好吗?
通常,
get_the_*
和 the_*
函数之间有两个主要区别。
get_the_*
方法本身不回显任何内容。相反,它们返回您感兴趣的值,通常作为字符串。例如, get_the_time()
不回显任何内容,并返回当前帖子发布时间的字符串表示形式。 the_*
方法直接输出相同的值,无需回显; the_time()
什么也不返回,而是直接回显发帖时间。the_*
方法通常设计为在循环内部使用,因此它们通常不使用参数来指定您要询问的帖子;例如, the_title()
不接受 post_id
参数,因此只能作用于循环内的“当前”帖子。在循环之外调用它是没有意义的——它将获得哪个帖子的标题? 但是,get_the_title()
将帖子 ID 作为参数,因此只要您知道帖子的 ID,您就可以在任何地方使用它来获取任何帖子的标题。 (为了方便起见,许多 get_the_
方法都采用可选的帖子 id 参数,并且如果在循环中使用它们,则默认返回当前帖子的值。)因为WordPress已经发展了这么多年,并且逐渐添加了一些东西,所以这些并不是保证的规则,你会发现到处都有例外。您应该将此作为一般建议,并根据需要检查每个特定实例的文档。
不同之处在于,您只能在循环内使用
the_*
。但是get_the*
您可以在循环内部使用或排除循环。在循环之外,您应该将 post_id 作为参数给出。
默认情况下
the_*
echo 是标题,get_the*
只是获取在 PHP 中使用它的标题。
还有更多的事情要做。我刚刚尝试了 the_content() 和 echo get_the_content() ,它们应该是相同的,但是..如果添加过滤器('the_content'),它将无法与 echo get_the_content() 一起使用,但它可以与 the_content() 方法一起使用。