wordpress主题开发:创建自定义文章类型post-type(3)——如何设置固定链接

本文的主题是wordpress主题开发:创建自定义文章类型post-type(3)——如何设置固定链接。在前面的文章中,我们注册过一个wordpress自定义文章类型——商城,也在后台实现的“商城”模块菜单的展示,在前台的文章也能正常展示。但是,前台的文章地址栏的地址不好看,因为我们的文章标题基本都是中文的,所以代码翻译后会很长,有点难看,如下图:

WordPress主题开发:创建自定义文章类型post-type(4)——怎样添加分类功能
本文讨论主题:wordpress主题开发:创建自定义文章类型post-type(4)——怎样添加分类功能。前面,我们注册了WordPress自定义文章类型——网...
WordPress主题开发:创建自定义文章类型post-type(2)
在上一章中,我们register_post_type()函数,创建了一个wordpress主题自定义文章类型,可见,自定义文章类型可以适应各种相对复杂或需求...
WordPress主题开发:创建自定义文章类型post-type(1)
本文主题是wordpress主题开发:创建自定义文章类型post-type(1)。常用WordPress的朋友都知道,WordPress程序内置了2种文章类型——“post...

wordpress主题开发:创建自定义文章类型post-type(3)——如何设置固定链接

这样的地址,看上去非常不美观,也不利于网站的SEO。因为,register_post_type()默认展示地址链接样式是‘post-slug/postname’,也就是自定义文章类型名+文章名,而我们的文章名是中文,所以就造成了这种难看的地址链接。

要想让这个地址链接变好看,而且有利于SEO,我们就要修改它的固定链接。在register_post_type()函数中有固定链接相关的参数有rewrite和slug,我们要用到这2个参数(详见上一章的介绍)。出现上图中这种难看的地址是因为我们在wordpress后台设置了固定链接,而在register_post_type()注册自定义文章类型时rewrite设置成true,就会是“自定义文章类型名+文章名”的地址,因为register_post_type()默认展示地址链接样式是‘post-slug/postname’,也就是自定义文章类型名+文章名,所以我们要对它进行修改,也就是修改这个固定链接的样式,如:让固定链接显示文章的ID号,而不是文章名。如下:

http://xxxxxxxxxx.com/book/33.html

那么怎样实现呢?下面这段代码就是修改自定义文章类型的固定链接格式的代码,将它放到主题的functions.php文件中就可以了:

  1. add_filter(‘post_type_link’, ‘custom_book_link’, 1, 3);
  2. function custom_book_link( $link$post = 0 ){
  3. if ( $post->post_type == ‘book’ ){
  4. return home_url( ‘book/’ . $post->ID .’.html’ );
  5. else {
  6. return $link;
  7. }
  8. }
  9. add_action( ‘init’, ‘custom_book_rewrites_init’ );
  10. function custom_book_rewrites_init(){
  11. add_rewrite_rule(
  12. ‘book/([0-9]+)?.html$’,
  13. ‘index.php?post_type=book&p=$matches[1]’,
  14. ‘top’ );
  15. }

效果如下图:

上面,这段代码只适应一个自定义文章类型时可用,如果你注册了多个自定义文章分类时,就不适用了。方法总比问题多,下面就是解决之道:

  1. $mytypes = array(
  2. ‘type1’ => ‘slug1’,
  3. ‘type2’ => ‘slug2’,
  4. ‘type3’ => ‘slug3’
  5. );
  6. add_filter(‘post_type_link’, ‘custom_book_link’, 1, 3);
  7. function custom_book_link( $link$post = 0 ){
  8. global $mytypes;
  9. if ( in_array( $post->post_type,array_keys($mytypes) ) ){
  10. return home_url( $mytypes[$post->post_type].’/’ . $post->ID .’.html’ );
  11. else {
  12. return $link;
  13. }
  14. }
  15. add_action( ‘init’, ‘custom_book_rewrites_init’ );
  16. function custom_book_rewrites_init(){
  17. global $mytypes;
  18. foreach$mytypes as $k => $v ) {
  19. add_rewrite_rule(
  20. $v.’/([0-9]+)?.html$’,
  21. ‘index.php?post_type=’.$k.’&p=$matches[1]’,
  22. ‘top’ );
  23. }
  24. }

上面的代码中,有3个自定义文章类型,它们分别是slug1、slug2、slug3,当然,这个名称要跟你的注册时原名称要一至哦,slug1、slug2、slug3分别为固定链接的前缀。

好了,如何修改wordpress自定义文章类型的固定链接样式就讲完了,后面还会陆续介绍相关内容。

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有M币奖励和额外收入!

模板下载吧 Wordpress教程 wordpress主题开发:创建自定义文章类型post-type(3)——如何设置固定链接 https://www.mbxzb.com/blog/wordpress/44472.html

从明天起,做一个幸福的人,喂马、劈柴、周游世界…

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用
查看详情

相关文章

评论
暂无评论
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 威武 友军 顶贴
官方客服团队

为您解决烦忧 - 24小时在线 专业服务