"get_current_user_id()" 与数字的严格比较失败
"get_current_user_id()" strict comparison with number fails
我有一个技术问题,比起解决方案,我更想了解它。
我将一个自定义函数连接到 WordPress functions.php 中的 'template_include' 过滤器,如下所示,以便在页面上工作而不会被其他任何人看到。
function template_redirect( $template ) {
if ( $template === locate_template('single-ressource.php') && get_current_user_id() === 11 ) {
return $new_template = locate_template( array( 'single.php' ) );
}
return $template;
};
add_filter( 'template_include', 'template_redirect', 99 );
因此,如果任何未登录我帐户的人进入 'ressource' 自定义 post 类型的页面,他们会看到标准 single.php 布局而不是单一 ressource.php布局。
问题是,它不能按原样工作。我必须将严格比较中的 11
整数更改为 '11'
字符串以使其 有效 (请参阅编辑) ,如下。
function template_redirect( $template ) {
if ( $template === locate_template('single-ressource.php') && get_current_user_id() === '11' ) {
return $new_template = locate_template( array( 'single.php' ) );
}
return $template;
};
add_filter( 'template_include', 'template_redirect', 99 );
我去看了 get_current_user_id() 函数的官方文档,他们似乎将类型转换为 return 整数或 0
。
此外,当我在前端执行 var_dump(get_current_user_id())
时,它 returns int(11)
.
有人知道为什么 第二个代码有效 (请参阅编辑)而不是第一个吗?
编辑
正如@Bazaim 指出的那样,我只是对所涉及的逻辑感到困惑。
对于第二个代码,我想隐藏的实际“single-ressource.php”并没有对任何人隐藏,因为传递的条件背后的逻辑存在缺陷。我只重定向 user_id
等于字符串 '11'
的用户,因为 user_id
是整数。
下面的代码可以完美运行。
function template_redirect( $template ) {
if ( $template === locate_template('single-ressource.php') && get_current_user_id() !== 11 ) {
return $new_template = locate_template( array( 'single.php' ) );
}
return $template;
};
add_filter( 'template_include', 'template_redirect', 99 );
你的 user_id 是 11 ?
您需要查看 single.php
:
$template
为 'single-ressource.php'
: 对
get_current_user_id()
为 11
:错误,您希望 id 不是 11
我有一个技术问题,比起解决方案,我更想了解它。
我将一个自定义函数连接到 WordPress functions.php 中的 'template_include' 过滤器,如下所示,以便在页面上工作而不会被其他任何人看到。
function template_redirect( $template ) {
if ( $template === locate_template('single-ressource.php') && get_current_user_id() === 11 ) {
return $new_template = locate_template( array( 'single.php' ) );
}
return $template;
};
add_filter( 'template_include', 'template_redirect', 99 );
因此,如果任何未登录我帐户的人进入 'ressource' 自定义 post 类型的页面,他们会看到标准 single.php 布局而不是单一 ressource.php布局。
问题是,它不能按原样工作。我必须将严格比较中的 11
整数更改为 '11'
字符串以使其 有效 (请参阅编辑) ,如下。
function template_redirect( $template ) {
if ( $template === locate_template('single-ressource.php') && get_current_user_id() === '11' ) {
return $new_template = locate_template( array( 'single.php' ) );
}
return $template;
};
add_filter( 'template_include', 'template_redirect', 99 );
我去看了 get_current_user_id() 函数的官方文档,他们似乎将类型转换为 return 整数或 0
。
此外,当我在前端执行 var_dump(get_current_user_id())
时,它 returns int(11)
.
有人知道为什么 第二个代码有效 (请参阅编辑)而不是第一个吗?
编辑
正如@Bazaim 指出的那样,我只是对所涉及的逻辑感到困惑。
对于第二个代码,我想隐藏的实际“single-ressource.php”并没有对任何人隐藏,因为传递的条件背后的逻辑存在缺陷。我只重定向 user_id
等于字符串 '11'
的用户,因为 user_id
是整数。
下面的代码可以完美运行。
function template_redirect( $template ) {
if ( $template === locate_template('single-ressource.php') && get_current_user_id() !== 11 ) {
return $new_template = locate_template( array( 'single.php' ) );
}
return $template;
};
add_filter( 'template_include', 'template_redirect', 99 );
你的 user_id 是 11 ?
您需要查看 single.php
:
$template
为'single-ressource.php'
: 对get_current_user_id()
为11
:错误,您希望 id 不是11