什么是$post_id?它是WordPress中的全局变量吗?

时间:2018-03-28 作者:Nimesh

怎么可能$post_id 在单发回显帖子时使用。php?

它是全局变量吗?

3 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

$post_id 不是全局变量。您可以在此处看到WordPress创建的全局变量列表:https://codex.wordpress.org/Global_Variables

$post_id 只是包含帖子ID的变量的常见命名约定。在教程和示例代码中,它显示该值应为帖子ID,但您仍需要在代码中的其他地方设置其值。

如果你在里面The Loop 您可以使用获取当前页面的ID或在循环中发布$post_id = get_the_ID(). 如果您在循环之外,并且希望获取当前查询的帖子或页面的ID,则可以使用$post_id = get_queried_object_id().

获取post ID的另一种方法是使用挂钩回调。例如,在post_thumbnail_size 钩子回调将收到一个post ID作为第二个参数:

function wpse_299132_post_thumbnail_size( $size, $post_id ) {
    return $size;
}
add_filter( \'post_thumbnail_size\', \'wpse_299132_post_thumbnail_size\', 10, 2 );
但这只是文档中用来明确变量所包含内容的名称。你可以叫它任何你喜欢的名字。这也是有效的,例如:

function wpse_299132_post_thumbnail_size( $size, $myPostId ) {
    return $size;
}
add_filter( \'post_thumbnail_size\', \'wpse_299132_post_thumbnail_size\', 10, 2 );
$myPostId 是第二个参数,因此将包含一个post ID。但您如何称呼它并不重要。

SO网友:AddWeb Solution Pvt Ltd

$post_id 不是全局变量。$post 是全局变量。您可以使用

global $post;
$post_id = $post->ID;

SO网友:JoyChetry

在某些情况下,如在循环之外时,可能需要使用
get_queried_object_id() 而不是get_the_ID().

$postID = get_queried_object_id();

结束