我的附件当前已从重写http://localhost/?attachment_id=3
至
http://localhost/images/image-title
使用@Bainternet的答案here.
$new_rules[\'images/(\\d*)$\'] = \'index.php?attachment_id=$matches[1]\';
但是,wordpress仍然将链接作为默认链接
http://localhost/?attachment_id=3
. Wordpress函数,如\\u permalink、get\\u attachment\\u url、get\\u attachment\\u image\\u src等,都使用默认格式
http://localhost/?attachment_id=3
.
如果手动键入重写的格式,我可以按预期访问图像http://localhost/images/image-title
.
如何让wordpress对永久链接使用自定义重写,尤其是在管理页面上?
EDIT: 针对具体性和正确性重新编写了问题:
如何覆盖the_permalink
使用格式/images/image-title
而不是/?attachment_id=ID
?
我可以使用$post->post_title
.
EDIT #2:
对于以后阅读此问题的任何人,我发现最好使用$post->post_name
以确保链接的唯一性
/images/post_title
最合适的回答,由SO网友:Milo 整理而成
您的规则与附件ID一起使用,因此我不确定您是如何使用标题的,但在这两种情况下,答案几乎相同。您需要的过滤器是attachment_link
:
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 );
更改
$post->post_title
到
$post->ID
将ID而不是标题放在URL中。