The_Author_meta()与get_the_Author_meta()

时间:2016-02-15 作者:N00b

据我所知,the_author_meta() 自动显示数据,同时get_the_author_meta() 必须是echo-d, 它也可以保存为变量并对其进行处理。

Is there something else to it that is not documented in codex?

另外,是否有一个或另一个功能更重,或者是否有第三个更好的选择?

这不是过早优化的情况-我需要显示大量作者数据。

<小时>

References:

the_author_meta()

get_the_author_meta()

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

如果您查看the_author_meta(), 本质上,这只是echo的结果get_the_author_meta().

WordPress有很多函数,其中the_* prefix只是回显其get_* 计数器部件。这个get_* 前缀几乎总是用于返回其结果的函数。

这两个函数之间实际上没有性能差异,您可以根据自己的喜好使用任何函数,尽管每个函数实际上都有各自的特定用途。使用the_author_meta() 如果你需要显示数据,它看起来有点疯狂echo get_the_author_meta(). 使用get_the_author_meta() 如果需要存储数据以供以后使用,或存储在需要返回内容的短代码中

编辑您可以随时在上查找源代码https://developer.wordpress.org, 你应该一直这样做。永远不要想当然。以上只是一个例子,get_the_content() 返回未过滤的原始帖子内容,the_content 返回来自get_the_content(), 所以他们在做什么方面有很大的分歧

编辑2。。。。还有第三种更好的选择吗

如果您查看get_the_author_meta(), 它使用get_userdata() 返回您可能感兴趣的所有字段

SO网友:Milo

对于这类问题,最简单的方法是look it up in Codex 然后按照链接查看the function in source.

我们可以看到the_author_meta 只是打电话而已get_the_author_meta 并将结果通过过滤器。

function the_author_meta( $field = \'\', $user_id = false ) {
    $author_meta = get_the_author_meta( $field, $user_id );

    echo apply_filters( \'the_author_\' . $field, $author_meta, $user_id );
}
另一个需要注意的重要事项是,与post元数据一样,当您请求单个元项时,所有的元项都会被加载和缓存,因此,无论是获取一个元字段还是50个元字段,都不重要,在这两种情况下,只需访问数据库即可获取所有元项。