WordPress纯代码实现直接将文章别名设置为文章ID!

WordPress纯代码实现直接将文章别名设置为文章ID!

使用WordPress博客的站长朋友肯定对文章别名不陌生,很多人的固定连接都是围绕着文章的 ID(/%post_id%.html) 展开的,而在国外很多站点的固定链接都是采用文章别名的。且有些插件和主题是必须要设置%postname%.html 这样的别名固定链接才能使用,而中文站点自动生成的文章别名直接是汉字(默认为文章的标题生成为文章别名),就会出现中文链接,那么调用出来的将会是一堆乱码(因为WordPress对中文的别名进行了编码,在数据库中存储的不是中文),文章链接地址也会很长,不利于SEO优化,非常不好。

为了SEO优化,在不改变以前的用文章ID作为文章链接地址且已经被收录的文章则要保证全部还能访问,不会造成了大量的死链接。这样就需要我们手动修改别名(WordPress使用自动生成的文章ID作为文章别名),今天就介绍怎么用纯代码实现直接将 WordPress 所有文章别名设置为文章ID的方法。

PS:为了安全起见,所有设置数据库的操作务必记得先备份网站的数据库,避免因失误带来无法挽回的损失!然后再按照下文操作!

一、修改固定链接结构

在后台的 “设置” → “固定连接” → “自定义结构”选项 里设置一下固定连接,把 ID 改成别名,也就是把固定连接里的 /%post_id%.html 改成/%postname%.html

31-1

二、批量修改旧文章(现在数据库里面的文章)的别名为文章 ID 的四种方法

方法一:在模板函数 functions.php 文件中添加代码实现批量修改旧文章别名

使用方法:将下边的代码添加到到当前主题目录下 functions.php 文件,在php结束标记 ?> 前 即可。

  1. // 修改WordPress旧文章别名为文章ID
  2. functionBing_post_name_id(){
  3. query_posts('posts_per_page=-1');
  4. while( have_posts()){
  5. the_post();
  6. $post_id = $GLOBALS['post']->ID;
  7. wp_update_post( array(
  8. 'ID'=> $post_id,
  9. 'post_name'=> $post_id
  10. ));
  11. }
  12. wp_reset_query();
  13. }
  14. if( $_GET['post_name_id']=='yes') add_action('init','Bing_post_name_id');

放置好代码后,访问一下下边的网站,注意替换成你的域名,访问前注意一定要备份数据,以免出错。

http://www.aszhi.com?post_name_id=yes

文章多的话网页加载会比较慢,因为正在一篇文章一篇文章的修改别名,要耐心等到网页完全加载好才可以。

PS:加载好后,删除之前添加的代码,修改完成,所有文章的别名都会变成自身的ID。

方法二:在配置文件 wp-config.php 中添加代码实现批量修改旧文章别名

使用方法:将下面的代码添加到网站 根目录的 wp-config.php 的最底部,保存后,访问一次网站首页(你将看到浏览器一直都在努力打开网页,不要急,耐心等待,直到网页真正打开,所需时间看文章数和网络情况而定)。等网页打开后,删除刚刚添加到 wp-config.php 的代码!(删除代码是为了防止下次打开网站首页缓慢的情况发生)

  1. /** 批量更改旧文章的别名为文章ID */
  2. // 添加一个变量来包容文章标题数组,防止重复操作
  3. $slug_done = array();
  4. // 查询所有文章
  5. $posts = $wpdb->get_results("
  6. SELECT
  7. `ID`,
  8. `post_title`
  9. FROM
  10. `". $wpdb->posts ."`
  11. WHERE
  12. `post_type` = 'post'
  13. ");
  14. // 输出文章
  15. foreach( $posts AS $single ){
  16. $this_slug = $single->ID;
  17. $slug_done[]= $this_slug;
  18. // 使用文章ID替换文章原来的别名
  19. $wpdb->query("
  20. UPDATE
  21. `". $wpdb->posts ."`
  22. SET
  23. `post_name` = '". $this_slug ."'
  24. WHERE
  25. `ID` = '". $single->ID ."'
  26. LIMIT 1
  27. ");
  28. }

方法三:直接替换SQL数据库里的 post_name 字段的方法

进入 mysql 命令【 选择你所创建的数据库的命令:mysql> USE MYSQLDATA; (注:MYSQLDATA是数据库的名称。按回车键出现 Database changed 时说明操作成功!) 】或者 phpmyadmin 的 SQL (登录后打开数据库管理系统,找到网站对应的wordpress数据库,点击后,在上方有个SQL按钮) ,执行如下SQL命令修改即可:

  1. update wp_posts set post_name=ID where post_status='publish'and post_type='post';

PS:wp_posts 是 WordPress 的文章数据表,wp_ 是默认的前缀,如果自定义更改过,请根据实际修改即可。

timthumb.php_
Windows进入MySQL操作界面执行命令语句来管理数据库

初学者刚开始安装和学习Mysql的时候,在Windows系统中无法进入Mysql操作界面,更是无法掌握一些图形化管理器,这时候需要掌握通过从CMD命令行或数据库管理工具进入Mysq......

阅读全文

方法四:使用新建一个 PHP 文件批量修改旧文章别名

操作方法:将以下代码保存为 php 文件,比如 uppostname.php,并上传到网站根目录,执行即可,成功后记得删除!

  1. <?php
  2. /**
  3. * 将所以已发布的文章别名修改成对应ID,让文章以别名完美连续
  4. * PS:备份网站数据库后,请放到WordPress根目录执行,成功后请记得删除!
  5. **/
  6. require('./wp-blog-header.php');
  7. global $wpdb;
  8. $wpdb->query("UPDATE $wpdb->posts SET post_name = ID WHERE post_status = 'publish' AND post_type = 'post'");
  9. echo 'Update Success!';
  10. ?>

任选其中一种方法,成功执行之后,你之前发布的文章的别名就全部变成了对应的 ID 了!这时候你就可以放心大胆的将固定链接设置为/%postname%.html 了!

三、新文章自动使用文章ID作为文章的别名

将下边的代码添加到到当前主题目录下 functions.php 文件,在php结束标记 ?> 前 ,新建的文章都会自动使用生成的文章ID作为文章别名。

  1. /**
  2. * WordPress新文章自动使用ID作为别名
  3. * 作用:即使你设置固定连接结构为 %postname% ,仍旧自动生成 ID 结构的链接
  4. */
  5. add_action('save_post','using_id_as_slug',10,2);
  6. function using_id_as_slug($post_id, $post){
  7. global $post_type;
  8. if($post_type=='post'){//只对文章生效
  9. // 如果是文章的版本,不生效
  10. if(wp_is_post_revision($post_id))
  11. returnfalse;
  12. // 取消挂载该函数,防止无限循环
  13. remove_action('save_post','using_id_as_slug');
  14. // 使用文章ID作为文章的别名
  15. wp_update_post(array('ID'=> $post_id,'post_name'=> $post_id ));
  16. // 重新挂载该函数
  17. add_action('save_post','using_id_as_slug');
  18. }
  19. }

 

------------------------------------------------------------------

END

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

电商数据分析360°实战攻略!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>