Wordpress在管理中使用此选项可以从url中删除一些查询参数。
其由函数生成wp_admin_canonical_url()
function wp_admin_canonical_url() {
$removable_query_args = wp_removable_query_args();
if ( empty( $removable_query_args ) ) {
return;
}
// Ensure we\'re using an absolute URL.
$current_url = set_url_scheme( \'http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'] );
$filtered_url = remove_query_arg( $removable_query_args, $current_url );
?>
<link id="wp-admin-canonical" rel="canonical" href="<?php echo esc_url( $filtered_url ); ?>" />
<script>
if ( window.history.replaceState ) {
window.history.replaceState( null, null, document.getElementById( \'wp-admin-canonical\' ).href + window.location.hash );
}
</script>
<?php
}
The
wp_removable_query_args()
返回一个包含查询参数的数组,例如,我们要删除默认参数。
$removable_query_args = array(
\'activate\',
\'activated\',
\'approved\',
\'deactivate\',
\'deleted\',
\'disabled\',
\'enabled\',
\'error\',
\'hotkeys_highlight_first\',
\'hotkeys_highlight_last\',
\'locked\',
\'message\',
\'same\',
\'saved\',
\'settings-updated\',
\'skipped\',
\'spammed\',
\'trashed\',
\'unspammed\',
\'untrashed\',
\'update\',
\'updated\',
\'wp-post-new-reload\',
);
例如,如果我们编辑一些帖子,url是
http://example.com/wp-admin/post.php?post=32&action=edit
保存帖子时,我们将url更改为/wp-admin/post.php?post=32&action=edit&message=1
但是使用JS,我们可以使用window.history.replaceState
并移除message
查询参数。
然后,如果我们更改url并单击“上一步”,我们将返回到存储的url,而不是带有message
.
我们不会看到这样的信息:Post updated. View post 再一次
可以通过创建新帖子来测试,您可以看到消息,然后转到主页并单击“上一步”。并确保您不会看到该消息,因为我们的浏览器历史记录url已更改为没有消息查询参数。
So why use the rel="canonical"
?
据我所知,wordpress核心没有真正的用途,除了
semantics 使用此标记。此标记旨在告诉我们,某个url与另一个url重复。
但由于其他爬虫使用此标记作为检查重复的选项,我们可以出于某种目的在管理区域构建自己的爬虫,我们可以使用此标记。