有没有办法重新生成永久链接的工作方式?我的意思是博客中的所有地方(所有插件和使用get_permalink()
的东西)。
我想将http://domain.com/wordpress/post_type/post等所有链接替换为http://domain.com/post_type/post
重写规则&这些东西是由htaccess完成的,所以如果我访问http://domain.com/post_type/post表单地址栏就行了,所以我只需要改变get_permalink()
的方式。
注意:我无法将文件移到 / wordpress / 文件夹之外,因为在其根目录中还有另一个html模板。
注意2:我尝试使用regexp进行了一些301重定向,然后我获得了重定向循环。所以,如果有办法用htaccess改变它,那就太棒了
非常感谢
答案 0 :(得分:1)
我终于找到了。如果您正在核对核心,则会看到所有过滤器https://core.trac.wordpress.org/browser/tags/3.5/wp-includes/link-template.php。对于自定义帖子类型,它是post_type_link
过滤器,对于帖子来说是post_link
。如果您要阅读代码,有很多有用的东西。我的问题的解决方案是:
define( 'SERVER_ROOT', 'http://' . $_SERVER['SERVER_NAME'] );
define( 'INSTALL_URL', site_url() );
add_filter( 'post_type_link', 'pleasure_post_links', 99 );
function pleasure_post_links( $permalink ) {
return str_replace( INSTALL_URL , SERVER_ROOT, $permalink);
}
上面的代码会将http://domain.com/wordpress_folder/custom_post_type
链接到http://domain.com/custom_post_type
。
你也可能需要在root .htaccess中(在根文件夹中,而不是wordpress文件夹)
RewriteEngine On
RewriteRule ^blog([^'"]+)?$ ./wordpress_folder/blog/$1
博客是自定义帖子类型名称, wordpress_folder 是wordpress的安装文件夹
我希望它对某些人有用,我差不多花两天时间寻找解决方案