端点用于向现有路由添加额外的查询变量,我认为您只需要一个普通的重写规则:
function wpd_media_image_rewrite_rule() {
add_rewrite_rule(
\'^image/([^/]*)/?\',
\'index.php?post_type=attachment&name=$matches[1]\',
\'top\'
);
}
add_action( \'init\', \'wpd_media_image_rewrite_rule\' );
您可能希望在那里循环有效的mime类型,并为每个类型添加一个规则。您还需要刷新重写才能开始工作,但不要使用
flush_rewrite_rules
在init上,就像上面的示例一样。规则只有在更改时才应刷新。刷新它们的一种快速方法是访问permalinks设置页面。
您还需要至少进行筛选attachment_link
要为未连接的媒体输出正确的URL,请执行以下操作:
function wpd_media_image_att_link( $link, $post_id ){
$post = get_post( $post_id );
if( 0 == $post->post_parent ){
$link = home_url( user_trailingslashit( \'image/\' . $post->post_name ) );
}
return $link;
}
add_filter( \'attachment_link\', \'wpd_media_image_att_link\', 10, 2 );
这里我们检查附件是否没有父级,因为如果附件附加到帖子,它将是父级帖子的子级。您还可以在此处检查mime类型,并使
image/
零件根据类型动态变化。
还有wp_get_attachment_link
如果模板中某处使用了过滤器,则可能需要过滤器的函数。我不认为core admin在任何地方都使用该功能,但我可能错了。