如果要完全禁用媒体页,应使用404响应代码,而不是重定向。这可以通过以下代码完成:
function wpse237762_set_404() {
if (is_attachment()) {
global $wp_query;
$wp_query->set_404();
status_header(404);
}
}
// This will show 404 on the attachment page
add_filter(\'template_redirect\', \'wpse237762_set_404\');
// This will show 404 instead of redirecting to attachment page when dealing with a trailing slash
add_filter(\'redirect_canonical\', \'wpse237762_set_404\', 0);
要使指向附件页的链接保持工作状态并将其直接重定向到文件,可以使用以下代码:
function wpse237762_change_attachment_link($url, $id) {
$attachment_url = wp_get_attachment_url($id);
if ($attachment_url) {
return $attachment_url;
}
return $url;
}
add_filter(\'attachment_link\', \'wpse237762_change_attachment_link\', 10, 2);
为了防止附件页保留普通页的段塞,可以使用此代码将所有新附件段塞设置为随机段塞(本例中为UUIDv4)
function wpse237762_unique_slug($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {
if ($post_type === \'attachment\') {
return str_replace(\'-\', \'\', wp_generate_uuid4());
}
return $slug;
}
add_filter(\'wp_unique_post_slug\', \'wpse237762_unique_slug\', 10, 6);
这将阻止名为
products.jpeg
保留URL
https://example.com/products
. 这将导致一个名为
Products 正在获得URL
https://example.com/products-2
这显然不是那么好。
我已经在Disable Attachment Pages plugin, 它还包括一个工具,可以扰乱现有的连接段塞,以便它们在将来不会造成任何问题。