如果一个变量被多次使用,将像get_the_id()这样的函数赋给它是否更好?

时间:2016-08-12 作者:Swen

如果我打电话get_the_ID() 在我的整个文件中多次指定get_the_ID() 到变量?

<小时>

// Call get_the_ID() directly
function_that_needs_post_ID( get_the_ID() );    
another_function_that_needs_post_ID( get_the_ID() );

VS

// Assign get_post_ID() to variable
$post_id = get_the_ID();    
function_that_needs_post_ID( $post_id );
another_function_that_needs_post_ID( $post_id);

1 个回复
SO网友:fuxia

是的,最好将函数调用的结果保存在私有变量中。但原因不是性能。

可靠性在您的示例中,您调用的函数在内部访问全局变量($post). 全局变量可以随时被覆盖,因此最终可能会two different post IDs, 因为其他代码更改了两次调用之间的变量。

一致性功能get_the_ID() 返回正整数或布尔值(false). 这很糟糕,因为它迫使您要么将值强制转换为整数,要么striving for "ifless" code, 或者,您必须在每次再次调用后决定要做什么,因此您会得到大量重复的代码。

我建议您将函数作为类的方法,然后在构造函数中传递(或设置)ID并在内部保存。这将减少静态依赖,如果WordPress更改了这一部分,那么您只有一段代码需要修复。

性能问题get_the_ID() 隐藏在中WP_Post::filter(). 但这太小了,你可以放心地忽略它。

相关推荐

Use Post ID in functions.php

我的functions.php. 它工作得很好:当预订时,它会给我发电子邮件。易于理解的然而,我希望它能给我发送该预订的post ID,而不仅仅是“你好,世界!”消息帮助function add_to_system() { // get post meta // $email = get_post_meta(\'\',$post_id) // $post_id = get_queried_object_id(); mail(\'michael.mc