不$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。但您如何称呼它并不重要。