我需要我的主题将Permalink类型默认为Postname。激活后,我的主题将执行以下代码:
//change permalinks to /%postname%/
global $wp_rewrite;
//Write the rule
$wp_rewrite->set_permalink_structure(\'/%postname%/\');
//Flush the rules and tell it to write htaccess or IIS
$wp_rewrite->flush_rules();
作为激活永久链接过程的一部分,WordPress会更新web服务器重写规则。这在*nix web服务器上运行良好,可以更新中的重写规则。htaccess,但它不会为IIS创建重写规则。
好的,可能与Windows计算机上的权限有关?
在Windows上,当从permalink设置页面更新permalink时,重写规则在IIS web中正确设置。配置。
我的问题是,在Windows IIS中,设置页面如何更新永久链接类型而没有问题,而上面的代码却没有(但在*nix上有)?
我不会编写脚本来手动更新重写规则。这应该由WordPress API来完成。
SO网友:Krzysiek Dróżdż
我认为这不是一个好办法。主题不应该更改任何设置,也绝对不应该更改permalink结构之类的设置。
如果我已经将permalinks结构设置为给定结构,那么我有理由这样做。这种变化有很多影响。如果你改变永久链接结构,你会导致很多SEO问题。但是,站点可能会完全停止工作(例如,如果服务器根本不支持永久链接,或者如果它没有访问.htaccess文件的权限)。
所以真正的问题不是如何迫使WP重新计算永久性链接,而是由谁来避免这种操作。
若您确实需要将永久链接结构设置为给定结构,那个么您可以礼貌地使用管理员通知要求用户更改它。
但老实说,我真的怀疑一个主题是否需要这样的改变。它应该适用于任何permalink结构。