我有一个自定义的post类型People,它有几个元字段。当ecpt_bio
meta字段为空,帖子将链接到ecpt_website
后期存档模板上的元字段。
然而,用户仍然可以访问无生物的单身人士。php帖子,如果他们有直接链接,或通过谷歌。
我编写了一个自定义函数,如果ecpt_bio
为空,并且ecpt_website
它重定向到该网站(然后通知搜索引擎)。
以下代码是否正确且安全,还是缺少什么?
谢谢
add_action( \'template_redirect\', \'redirect_empty_bios\' );
function redirect_empty_bios() {
if(is_singular(\'people\') ) :
global $post;
$bio = get_post_meta($post->ID, \'ecpt_bio\', true);
$link = get_post_meta($post->ID, \'ecpt_website\', true);
if(empty($bio) && isset($link)) {
wp_redirect(esc_url($link), 301);
exit;
}
endif;
}
最合适的回答,由SO网友:Nathan Kinkead 整理而成
从技术上讲,这段代码看起来像是在完成您想要做的事情,我没有看到任何明显的漏洞。
但是,当人们点击查看某人的个人简历时,你真的打算将他们从你的网站重定向出去吗?我认为,这听起来让用户很困惑,会导致糟糕的用户体验。
关于安全性,谁在ecpt\\U网站字段中输入数据?您还是用户?如果是用户,我肯定会避免。
我假设这些是场外链接,但如果您使用的是内部链接,则应该使用wp_safe_redirect()
而是用于内部链接。