WordPress中的URL有两部分-
其中一部分是任何给定内容的URL输出。要更改这些内容的输出方式,需要对其进行过滤。这是你的attachment_link
过滤器有。
另一部分是WordPress如何确定请求的URL应该加载哪些内容。这是您缺少的部分-WordPress仍然希望这些请求包含attachment
, 不是你的新词。
要解决这个问题,您可以过滤WordPress生成的重写规则,并替换attachment
无论你想要什么独特的东西:
function wpd_rename_attachment_rewrites( $rules ){
foreach( $rules as $key => $value ){
$new_key = str_replace( \'attachment\', \'new-word\', $key );
unset( $rules[ $key ] );
$rules[ $new_key ] = $value;
}
return $rules;
}
add_filter( \'rewrite_rules_array\', \'wpd_rename_attachment_rewrites\' );
编辑-
这个attachment_link
问题中的函数忽略了$link
, 并以固定模式返回URL:
function wpd_attachment_link( $link, $post_id ){
$post = get_post( $post_id );
return home_url( \'/images/\' . $post->post_title );
}
add_filter( \'attachment_link\', \'wpd_attachment_link\', 20, 2 );
将其更改为替换
attachment
在传递为的值内
$link
相反,保留原始URL的其余部分:
function wpd_attachment_link( $link, $post_id ){
return str_replace( \'/attachment/\', \'/new-word/\', $link );
}
add_filter( \'attachment_link\', \'wpd_attachment_link\', 20, 2 );