我有一些页面,特定用户只应该访问这些特定页面。
因此,我创建了一个自定义字段,将用户名分配给特定页面。自定义字段:http://take.ms/tCCWQ
如果当前用户名和自定义字段值不相同,则应将页面重定向到其他页面。
我把这一页放在页脚。php
if( is_page() ) { // run only if it is a page
$current_user = wp_get_current_user();
global $wp_query;
$postid = $wp_query->post->ID;
$getClient = get_post_meta($postid, \'clientName\', true);
$clientName = get_post_meta( $post->ID, \'clientName\', true );
if (!empty( $clientName )) { // run only if the specific custom field has value
if ($getClient !== $current_user){ // if the current user and the custom feilds vlaues are NOT same
echo \'<br/>this page is NOT assigned for you\';
header("Location: https://www.google.com"); /* if not same then Redirect */
exit();
}
}
}
只有在页面具有此自定义字段值的页面中,我才能在页脚中看到此消息。因此,逻辑工作得很好,但问题是重定向不起作用。如果当前用户名和自定义字段为
not 同样,它应该被重定向到另一个页面。
为什么它不起作用?我怎样才能解决这个问题?
如果我能用这个就好了login_redirect
筛选或使用wp_redirect($url);
最合适的回答,由SO网友:Orlando P. 整理而成
发送标题后(输出已写入屏幕),您不能使用wp_redirect()
尝试将代码放置在header.php
在任何输出之前,看看是否工作得足够好。
如果不是,你将不得不\'send_headers\'
, \'template_redirect\'
, 或\'init\'
并在任何输出之前检查值和重定向。