Wordpress get_permalink重写

时间:2014-02-05 17:40:43

标签: php wordpress .htaccess mod-rewrite url-redirection

有没有办法重新生成永久链接的工作方式?我的意思是博客中的所有地方(所有插件和使用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改变它,那就太棒了

非常感谢

1 个答案:

答案 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的安装文件夹

我希望它对某些人有用,我差不多花两天时间寻找解决方案