2016-11-19 105 views
0

的,我想修改的職位目前的永久鏈接結構包括一個日期,它是在設置頁面中配置,如:「/%,比去年%/%monthnum%/%天%/ %類別%/%postname%/」更改永久鏈接結構

一個例子公佈網址:http://example.com/2016/09/11/category/child-category/long-post-slug-is-printed-here/

我的問題是,我無法弄清楚如何修改標記有特定標籤的帖子這個固定鏈接結構,所以例如,如果我有一個標籤「永久-STRUC-2」,我把它添加到我的帖子,我想那麼永久改寫爲:http://example.com/category/child-category/long-post-slug-is-printed-here/ 的日期應該從後永久被剝離。

我使用WP濾波器 「POST_LINK」

嘗試的add_filter( 'POST_LINK',陣列($此, 'change_permalink_date_structure'),1,3);

但是最終情況是,URL被改變,但是當我試圖訪問距離縮短的URL後,它仍然重定向到原來的 - >http://example.com/2016/09/11/category/child-category/long-post-slug-is-printed-here/

任何人都可以在這個問題上需要幫助,請?

感謝

+0

你能告訴我實際上想要存檔嗎? –

+0

我想更改標記爲特定標記的帖子的永久鏈接結構 – dulesaga

+0

您目前的網址是什麼? –

回答

0

你可以嘗試使用htaccess的國防部重寫。您必須爲每個網址添加一條規則。例如:

RewriteRule /category/child-category/long-post-slug-is-printed-here/ /2016/09/11/category/child-category/long-post-slug-is-printed-here/ [L] 
+0

感謝你的這一點,但它並沒有完全解決我的問題,因爲要爲每個需要這種例外的帖子編輯htaccess文件並不容易。 – dulesaga

0

感謝大家試圖在這方面提供幫助,我設法找到了我需要的方法。基本上,我寫了一個重寫規則,WP用與add_rewrite_rule() 它適用於POST網址的沒有日期:

$rewrite_rule_regex = '^(?!([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/)(.+?)/([^/]+)(?:/([0-9]+))?/?$'; 

add_rewrite_rule($rewrite_rule_regex, 'index.php?category_name=$matches[4]&name=$matches[5]&page=$matches[6]&istaggedcalendar=1', 'bottom'); 

而且,這種新的重寫規則必須有比過去更高的優先級(通用)wp重寫規則(如果我的重寫規則是最後一次,並且如果它被設置爲「top」,則其它一些重寫規則不起作用,它不起作用):

add_filter('rewrite_rules_array',array($這,'rewrite_rulles_array_look'));

// * set the priority of our rewrite rule to not interfere with other pages 

function rewrite_rules_array_look($r_array) { 

    $rew_rule = $r_array[$this->rewrite_rule_regex]; 

    unset($r_array[$this->rewrite_rule_regex]); 

    $res = array_slice($r_array, 0, count($r_array)-1, true) + 

     array($this->rewrite_rule_regex => $rew_rule) + 

     array_slice($r_array, count($r_array)-1, count($r_array) , true) ; 


    return $res; 

}