自定义 URL Rewrite Rules 规则实现附件页面伪静态

文 / @UTHEME

关于WordPress附件链接实现伪静态的方法

为了让你更好地了解附件链接伪静态,本篇文章会详细讲解附件链接存在的问题以及如何处理伪静态规则。

WordPress默认附件链接的问题

display-swf

WordPress默认的附件链接没有伪静态支持,这就限制了一些网站需要展示附件内容的需求。如果附件链接不做伪静态处理,链接看起来是这个样子的:`www.yoursite.com/?attachment_id=1336`。我们需要把链接显示成这个样子:`http://www.yoursite.com/doc/1336/`,下面我们来看一下附件链接伪静态的方法。

WordPress实现附件链接伪静态的方法

1、首先设置附件的固定链接

add_filter('attachment_link','wizhi_attachment_link',10,2);
function wizhi_attachment_link($link,$post_id){
return home_url('/doc/'.$post_id.'/');
}

2、然后设置伪静态规则

add_action('generate_rewrite_rules','wizhi_generate_rewrite_rules');
function wizhi_generate_rewrite_rules($wp_rewrite){

$wp_rewrite->rules = wizhi_remove_rewrite_rules($wp_rewrite->rules);
$wp_rewrite->extra_rules_top = wizhi_remove_rewrite_rules($wp_rewrite->extra_rules_top);

$new_rules = array();
$new_rules['doc/([0-9]+)/?$'] = 'index.php?attachment_id=$matches[1]';
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

3、最后删除原来的伪静态规则

function wizhi_remove_rewrite_rules($rules){
foreach($rules as $key => $value){
if(strpos($value,'attachment')!==false){
unset($rules[$key]);
}
}
return $rules;
}

以上的伪静态代码是通过WordPress的伪静态系统处理的,与网站运行的平台无关,只要你的主机支持伪静态功能,不管是Nginx还是Apache,都可以完美运行以上代码,实现附件链接伪静态。

设置好后,如果点击附件链接出现404错误,一般是因为伪静态规则有缓存,先在“设置>固定链接”里面把固定链接结构设置成默认的,以清除伪静态缓存规则缓存,然后再设置成文章名就可以了。

以上就是关于WordPress附件链接实现伪静态的方法的全面讲解。希望对你有所帮助。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。