WordPress固定链接修改成日期 作者的形式

例如/post/author/frustigor,/post/date/2014/04,这就很奇怪了,非常不好看,也没有必要。我们想要的结果三/author/name和/date/year/month的形式。怎么来修理呢?这篇文章告诉你答案。

1.你必须了解的事 ↑

我们需要先了解这些事实:1.你必须通过编写wordpress相关的php程序才能解决这个问题;2.你必须懂,这个问题关系着两个东西,一个是链接,例如“2014年3月”这个边侧栏里面的链接必须修改为链接到不带post的URL,另外一个是重写,你得让wordpress知道这个URL是用来调用月份的归档栏目的。

这两个问题可是比较难懂的,你要是对wordpress的开发一窍不通,就直接往下拖,如果你对实现原理比较感兴趣,就慢慢往下看。

2.如何修改链接,使点击链接进入我们想要的URL ↑

这个其实没有那么难,非常简单。wordpress里面有一些hook,可以直接实现这个效果,主要是year_link、month_link、day_link、author_link。怎么用呢?

 代码如下 复制代码
add_filter('author_link','archive_rewrite_link', 99, 2);
add_filter('day_link','archive_rewrite_link', 99, 2);
add_filter('month_link','archive_rewrite_link', 99, 2);
add_filter('year_link','archive_rewrite_link', 99, 2);
function archive_rewrite_link($link){
 global $wp_rewrite; www.111cn.net
 $front = ltrim($wp_rewrite->front,'/');
 $link = str_replace_first($front,'',$link);
 return $link;
}

上面的str_replace_first是我自己写的一个函数,往下拖,在全部代码里面可以看到。非常简洁的一段代码,刷新看看,是不是这些链接都修改了。不过不要高兴的太早,链接是修改过来了,但是不要高兴的太早,是不是看到404了,对的,wordpress还根本不知道你已经修改过链接了。

3.为wordpress增加重写规则,让修改后的链接可以被正常访问 ↑

在wordpress里面有个叫rewrtie的全局类,这个类超级厉害,决定了你当前访问的URL会显示什么内容。如果你去看别人写的有关这方面的文章,绝对会吓死你,里面的逻辑非常复杂。不过,不用担心,我们这里给一个极其简单的代码就可以实现。

 代码如下 复制代码
add_filter('author_rewrite_rules','archive_rewrite_rules',99);
add_filter('date_rewrite_rules','archive_rewrite_rules',99);
function archive_rewrite_rules($rules){
 global $wp_rewrite;
 $front = ltrim($wp_rewrite->front,'/');
    foreach($rules as $key => $value){
        $newrules[str_replace_first($front,'',$key)] = $value;
    }
    return $newrules;
}

有没有发现,比前面一段代码还短。其实道理也很简单,在URL被解析之前,我们通过修改全局类$wp_rewrite变量,即可实现我们的目的。(这种方法非常投机取巧,因为对于wordpress本身而言,数据库里面的重写规则没有变。不过,这有什么关系呢?我们可以实现自己的效果就好了。)

4.完整的代码

如果你是小白,把下面的代码拷贝到你的主题目录中的functions.php文件中,注意,一定要放在<?php ?>里面哦。

老规矩,回复才能阅读完整代码。

 代码如下 复制代码

// 替换字符串中第一次出现的子串
if(!function_exists('str_replace_first')):
function str_replace_first($find,$replace,$string){
 $position = strpos($string,$find);
 if($position !== false){
  $length = strlen($find);
  $string = substr_replace($string,$replace,$position,$length);
  return $string;
 }else{
  return false;
 }
} www.111cn.net
endif;

// 首先,修改网页里面的链接
add_filter('author_link','archive_rewrite_link', 99, 2);
add_filter('day_link','archive_rewrite_link', 99, 2);
add_filter('month_link','archive_rewrite_link', 99, 2);
add_filter('year_link','archive_rewrite_link', 99, 2);
function archive_rewrite_link($link){
 global $wp_rewrite;
 $front = ltrim($wp_rewrite->front,'/');
 $link = str_replace_first($front,'',$link);
 return $link;
}

// 接着,修改重写规则
add_filter('author_rewrite_rules','archive_rewrite_rules',99);
add_filter('date_rewrite_rules','archive_rewrite_rules',99);
function archive_rewrite_rules($rules){
 global $wp_rewrite;
 $front = ltrim($wp_rewrite->front,'/');
    foreach($rules as $key => $value){
        $newrules[str_replace_first($front,'',$key)] = $value;
    }
    return $newrules;
}

这里也给了不少有关URL的思路,例如今后你可以通过修改$wp_rewrite来快速实现修改author页面的前缀了,例如你可以把你的作者页面修改为/user/user_id的形式,是不是很酷。

时间: 2024-09-20 16:55:20

WordPress固定链接修改成日期 作者的形式的相关文章

去除WordPress固定链接中的category路径方法总结

从SEO的角度来说,网站链接越简洁越好,链接的路径越少越好.wordpress默认情况下设置固定链接,分类页面是有category路径的. 解决方法网上也有提供,有使用插件,有使用伪静态的.下面小峰来说一下,能处理的几种方法. 注:以下部分代码来源于网上. 方法一: 在functions.php文件中添加如下代码,然后到wp后台-设置-固定链接-保存一次即可生效. /**  * 去除固定链接中的/category/路径,记得在后台保存一次固定链接  */ add_action('init', '

Nginx下修改WordPress固定链接导致无法访问的问题解决_nginx

今天下午没事,像以往一样开始做seo的优化,当然牵扯到永久链接,wordpress提供多种类型的链接形式     1/%year%/%monthnum%/%day%/%postname%/     2/%year%/%monthnum%/%postname%/     3/%year%/%monthnum%/%day%/%postname%.html     4/%year%/%monthnum%/%postname%.html     5/%category%/%postname%.html

wordpress固定链接设置的一些心得

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 捣鼓博客,先前纠结模板的选用,模板选好了又纠结固定链接.我总是不消停.首先看下wordpress的固定链接设定. 此功能允许自定义链接形式,以提高美感.可用性和向前兼容性.(需要主机支持伪静态) 我们设置固定链接无非是让博客链接更加的美观,以及对SEO优化会有所帮助. 先来看看网上一些常用的链接格式: 1/%year%/%monthnum%/

删除wordpress固定链接后URL中的category的方法

插件方案删除category的方法 wordpress设置伪静态(即后台--设置--固定链接,非默认)后,分类目录的URL结构会变成http://域名/category/目录别名,显然其中的category/很碍眼.前面介绍过两款插件 No category parents 和 wp-no-category-base 用于去掉伪静态后分类目录URL的category/部分,现在再介绍一款删除分类目录URL中category/的插件FV Top Level Categories. 插件介绍: 设置

去除WordPress固定链接中category路径方法

解决方法网上也有提供,有使用插件,有使用伪静态的.下面小峰来说一下,能处理的几种方法. 注:以下部分代码来源于网上. 方法一: 在functions.php文件中添加如下代码,然后到wp后台-设置-固定链接-保存一次即可生效.  /**  * 去除固定链接中的/category/路径,记得在后台保存一次固定链接  */ add_action('init', 'inlo_no_category'); function inlo_no_category() {  global $wp_rewrite

wordpress搏客伪静态固定链接设置失败的解决办法

说句不怕大家笑话的话,做了四五年的网站了却从来不会设置网站的伪静态链接,一般都是程序自带的.即使是动态的链接我也不在乎,在乎又有什么办法呢,不会呀.今天我用一天的时间来研究wordpress设置伪静态链接的方法,没想到研究了一天,晚上的时间终于研究好了,所以才想写篇文章,希望能帮助到和比尔云遇到一样问题的朋友,好了,下面进入今天的主题. 第一个,wordpress固定链接设置的方法 1.不要让日期出现在固定链接里面 这基于两个方面的考虑.一是如果数字出现在固定链接里面,等于提醒搜索引擎,这是很旧

Wordpress虚拟主机设置固定链接的技巧

Wordpress作为一种主流的博客系统,得到很多站长的青睐.事实上,wordpress也非常利于seo,今天就来说说wordpress中的固定链接设置以及优化. 固定链接一般有5种形式:默认的?p=id形式,日期+名称形式,数字形式,还有就是自定义结构.大家可以发现大多数的wordpress网站都是使用的最后一种自定义结构形式,因为这样的形式有利于搜索引擎优化.那么,自定义结构又应该怎么设置好呢? 一般的自定义结构主要有以下两种:直接设置为/%postname%/或者是设置成/%postnam

WordPress 更改固定链接实例讲解

WordPress 博客原来的固定链接模式是:http://site.com/archives/%post_id%.html 现在想改为:http://site.com/%post_name% 要求: 1. 老文章(http://site.com/archives/%post_id%.html)能 301 跳转到新固定链接方式 2. 新文章是 http://site.com/%post_name% 方法: 0. 前提 - 敬告:折腾有风险!!!涉及到数据库操作,请在折腾前认真备份好数据库!!!

Nginx下让WordPress支持固定链接的伪静态规则_nginx

Nginx下让WordPress支持固定链接的伪静态规则 要让nginx支持wordpress固定链接非常简单,需要自己进行添加点配置代码: 复制代码 代码如下: location / {if (-f $request_filename/index.html){                rewrite (.*) $1/index.html break;        }if (-f $request_filename/index.php){                rewrite (