WordPress 默認(rèn)的附件鏈接沒有偽靜態(tài)支持,而有一些網(wǎng)站是需要展示附件內(nèi)容的,這時候,把附件鏈接轉(zhuǎn)為偽靜態(tài)的形式是很有必要的。比如下面的例子。

這個類似于百度文庫的東西其實就是個由 Word 轉(zhuǎn)換成的 swf 文件,上傳到 WordPress 站點以后,直接點擊附件鏈接就是截圖中顯示的樣子,如果附件鏈接不做偽靜態(tài)處理的話,看起來是這個樣子的:`www.yoursite.com/?attachment_id=1336`,而我們需要吧鏈接顯示成這個樣子:`http://www.yoursite.com/doc/1336/`。下面我們來看一下附件鏈接偽靜態(tài)的方法。
WordPress 附件鏈接實現(xiàn)偽靜態(tài)的方法
1、首先設(shè)置附件的固定鏈接
add_filter('attachment_link','wizhi_attachment_link',10,2);
function wizhi_attachment_link($link,$post_id){
return home_url('/doc/'.$post_id.'/');
}
2、然后設(shè)置偽靜態(tài)規(guī)則
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]+)/?
3、最后刪除原來的偽靜態(tài)規(guī)則
function wizhi_remove_rewrite_rules($rules){
foreach ($rules as $key => $value) {
if( strpos($value, 'attachment') !== false ){
unset($rules[$key]);
}
}
return $rules;
}
設(shè)置好后,如果點擊附件鏈接出現(xiàn) 404 錯誤,一般是因為偽靜態(tài)規(guī)則有緩存,先在“設(shè)置>固定鏈接”里面把固定鏈接結(jié)構(gòu)設(shè)置成默認(rèn)的,以清除偽靜態(tài)緩存規(guī)則緩存,然后再設(shè)置成文章名就可以了。
以上的偽靜態(tài)代碼是通過 WordPress 的偽靜態(tài)系統(tǒng)處理的,與網(wǎng)站運行的平臺無關(guān),只要你的主機支持偽靜態(tài)功能,不管是 Nginx 還是 Apache,都可以完美運行以上代碼,實現(xiàn)附件鏈接偽靜態(tài)。
] = 'index.php?attachment_id=$matches[1]';
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
3、最后刪除原來的偽靜態(tài)規(guī)則
設(shè)置好后,如果點擊附件鏈接出現(xiàn) 404 錯誤,一般是因為偽靜態(tài)規(guī)則有緩存,先在“設(shè)置>固定鏈接”里面把固定鏈接結(jié)構(gòu)設(shè)置成默認(rèn)的,以清除偽靜態(tài)緩存規(guī)則緩存,然后再設(shè)置成文章名就可以了。
以上的偽靜態(tài)代碼是通過 WordPress 的偽靜態(tài)系統(tǒng)處理的,與網(wǎng)站運行的平臺無關(guān),只要你的主機支持偽靜態(tài)功能,不管是 Nginx 還是 Apache,都可以完美運行以上代碼,實現(xiàn)附件鏈接偽靜態(tài)。


