更改WordPress附件的固定链接

时间:2014-04-22 作者:csi

我的附件当前已从重写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

2 个回复
最合适的回答,由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中。

SO网友:Severin

更改永久链接url的其他方法

function ro_remove_attachment_title_caption( $attach_id ){
 $args = array(
   \'ID\'          => $attach_id,
   \'post_name\'   => "permalinkName",
 );
 wp_update_post( $args );
}
add_action( \'add_attachment\', \'ro_remove_attachment_title_caption\', 10, 1 );
它在插件的上下文中工作:remove OLYMPUS DIGITAL CAMERA from caption and title by Image upload

结束