自定义WordPress的URL参数以及设置路由规则

秋末残雪 · 发布于 2015-04-26 · 字数6620 · 浏览 3857 · 评论 0

我们知道通过URL传参数很简单,加上类似?name=aa&city=bb这样的形式就可以了,获取参数直接用$_GET['name']方法,这当然没错。但是在WordPress中,我们要用到它的路由功能,使得链接更加美观,就不能采用这种形式,但是原理还是一样的。

那么在WordPress中怎么传值,要用到它自带的方法,再使用路由规则进行解析。在网上找了很多文章,找到这篇英文的教程,讲得非常到位。

不一定英语要多么好才能看懂,你只要看得懂那么大概的意思,看看代码就知道讲的是什么了,很多东西老外的网站上比国内的全。特此分享这篇文章。

从JR关于自定义分类法得到的有用信息:

我正在寻找一个解决方案的几天,终于找到一个方法去自定义分类页面,进一步细化的结果:post_type。这是重要的当你有一个情况与一个服务于多个文档类型的分类。我希望能拯救他人的恶化显然评论文章关闭。

用于更新JR谢谢!

它可能不会立即明显一些,这样的技术可能会派上用场。所以我用最近的一个项目为例。这个项目是为公司的子公司,是辛辛那提最著名的制造业公司。我们发展工业流体:添加剂,防锈剂和金属加工液是他们的一些主要产品线和产品页面,我们会使用这个教程。

要求

他们已经有了一个网站,但是请我们处理SEO。参与这一过程的一部分清理站点的URL结构的产品网页的URL查询字符串中去除。我将在本教程涵盖特定网页。如果你访问这个链接,点击任何类别列在页面的左边你会看到你发送到一个网页,看起来相同,但在URL的类别名称。

事实上,所有的页面通过WordPress都是一样的,而内容显示在这些网页的每一个由一个从URL的最后部分解析查询字符串的确定。这让我们有丰富的关键字的URL的产品类别,而无需创建每个类别分开的WordPress页面。

问题

与这件事在WordPress中最大的问题,我提到在最后一段,是即使有相当的permalinks启用,我们就不得不创造一个独特的为每个这些产品类别模板的一个新的WordPress页面。只有15个产品类别的时候,那不会是一个单调乏味的任务,直到你考虑的事实,它使添加类别有点麻烦,因为我们要创建一个新的WordPress网页和网页模板的任何公司需要添加类别。而这将意味着更多的工作时间对我们来说,它不如果可以成为客户的最佳利益。

解决方案

值得庆幸的是,它是可以避免的。而不是创建一堆网页和各自的网页模板,每次添加新的类别,我们可以使用WordPress的重写URL规则指定自定义的重写规则通过查询字符串作为URL的一部分,使用一个单一的网页和网页模板来显示所有的产品类别。

过程

第一步是创建一个函数变量添加到WordPress的查询字符串,然后添加到函数为query_vars的Hook。

接下来,我们创建了一个函数WordPress的现有数组的重写规则和钩子函数为rewrite_rules_array钩添加规则。

最后在网页模板中,我们使用$wp_query对象的query_vars属性获得从URL查询字符串。

代码

所以让我们来编写代码吧,首先我们要创建一个函数来告诉WordPress来跟踪我们的新的查询变量。这个函数会在你的主题functions.php文件。

function add_query_vars($aVars) {
  $aVars[] = "msds_pif_cat"; 
  // represents the name of the product category as shown in the URL
  return $aVars;
}
// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');

上述过程是相当简单的。当函数被钩入query_vars的WordPress查询变量,通过现有的数组函数。我们只需添加“msds_pif_cat”作为另一个查询变量并将数组返回到WordPress。

现在的WordPress的人都知道,除了它的现有的查询变量,它应添加一个称为“msds_pif_cat“我们将使用存储类产品名称,URL中指定的。

然而这一点不会做的伎俩。我们还需要告诉WordPress如何处理查询变量。在我们的案例中,我们想要的产品类别网页的URL看起来像这样:http://www.cimcool.com/msds-pif/category-name/。所以,我们需要告诉WordPress的时候发现一个URL匹配的结构,使用的最后部分,类别名称,来查询我们的新的“msds_pif_cat”变量。这样做我们需要添加一个自定义的重写规则。

我们做到这一点,我们的主题functions.php文件的另一个功能:

function add_rewrite_rules($aRules) {
    $aNewRules = array('msds-pif/([^/]+)/?$' => 'index.php?pagename=msds-pif&msds_pif_cat=$matches[1]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}
// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules');

函数连接到rewrite_rules_array,那么WordPress通过现有的重写规则作为一个数组的函数,然后检索$aRules变量。

然后我们在一个数组的形式添加新规则:array('msds-pif/([^/]+)/?$' => 'index.php?pagename=msds-pif&msds_pif_cat=$matches[1]')

这条规则告诉WordPress的时候发现一个URL,包括“msds-pif/”,其次是比其他任何一个正斜杠,其次是另一个(可选)正斜杠,捕捉到的URL的最后部分(括号内的部分),和服务页面的“index.php?pagename=msds-pif&msds_pif_cat=$matches[1]”。

默认情况下,WordPress会将所捕获的部分数组中称为匹配的URL。如果我们有一个URL请求”http://www.cimcool.com/msds-pif/industrial-cleaners/“,WordPress会在“index.php?pagename=msds-pif&msds_pif_cat=industrial-cleaners”。

这使我们能够捕捉msds_pif_cat变量对msds-pif页面模板和不同的内容取决于该变量的内容。

要查询变量

我们不能只使用$_GET全局获取我们的msds_pif_cat查询变量。相反我们要访问$wp_query对象的 query_vars 属性。

所以,在我们的msds-pif网页模板,我们将使用下面的代码访问该变量:

if(isset($wp_query->query_vars['msds_pif_cat'])) {
    $sMsdsCat = urldecode($wp_query->query_vars['msds_pif_cat']);
}

接下来的步骤

在我们的例子中,我们把所有的产品相匹配的类别名称从数据库存储在 $sMsdsCat 显示在页。显然你做什么和该变量是由你,从这一点上没有不同,如果你使用PHP的 $_GET 得到非WordPress的网页查询变量。

有一件事我应该在这里提到的是 rewrite_rules_array Hook就是当你更新或保存您的永久链接结构,所以在你做出这些改变,你必须重新保存的永久链接看到更改生效。

更多的例子

把上面的链接我们看到这一切行动一看。对使用多个自定义查询变量的一个例子,在屏幕上创新的经销商一看,我们用相似的方法来显示页面上的经销商对于一个给定的国家,使用搜索引擎友好的网址,而不需要创建一百个左右的站点和文件的网页模板。

最后,看看下面的关于WordPress URL重写更多的信息资源:

http://codex.wordpress.org/Function_Reference/WP_Query
http://www.prodeveloper.org/create-your-own-rewrite-rules-in-wordpress.html
http://www.seodenver.com/custom-rss-feed-in-wordpress/

原文:http://www.rlmseo.com/blog/passing-get-query-string-parameters-in-wordpressurl

本文系作者 秋末残雪 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

相关文章

  • 2015-08-11在博客站点中添加捐赠支持页面功能
  • 2015-09-05scrollReveal.js页面元素滚动插件自定义配置参数介绍
  • 2016-05-16向设计前辈学习!9个小技巧让你的设计更专业
  • 2016-05-17重获新生!网页设计中的神奇彩色滤镜效果
  • 2016-06-06JS制作的炸金花小游戏
  • 2016-06-08Real-shadow在网页中创建元素/文字真实的阴影特效
  • 2016-07-06如何将APK安装到android模拟器中
  • 2016-08-05十款Chrome扩展帮助前端设计师提升编码效率
  • 发布评论

    为您推荐

    一个组件框架的构建
    问说网 · 发布于 2016-03-12

    一个组件框架的构建

    组件:提供特定功能的软件实体,能够独立编译,通过不同的接口表现不同的行为。目标是实现组件开发和产品开发分离,接口和实现分离。通过注册组件可以在产品中快速的定制组…


    Warning: file_exists(): open_basedir restriction in effect. File(../uedsc/wp-content/uploads/post-thumbnail/36965_0_thumbnail.jpg) is not within the allowed path(s): (/home/wwwroot/uedsc.com/:/tmp/:/proc/) in /home/wwwroot/uedsc.com/wp-content/themes/mwst/loop.php on line 15

    Warning: file_exists(): open_basedir restriction in effect. File(../uedsc/wp-content/uploads/post-thumbnail/36965_1_thumbnail.jpg) is not within the allowed path(s): (/home/wwwroot/uedsc.com/:/tmp/:/proc/) in /home/wwwroot/uedsc.com/wp-content/themes/mwst/loop.php on line 15

    Warning: file_exists(): open_basedir restriction in effect. File(../uedsc/wp-content/uploads/post-thumbnail/36965_2_thumbnail.jpg) is not within the allowed path(s): (/home/wwwroot/uedsc.com/:/tmp/:/proc/) in /home/wwwroot/uedsc.com/wp-content/themes/mwst/loop.php on line 15

    Warning: file_exists(): open_basedir restriction in effect. File(../uedsc/wp-content/uploads/post-thumbnail/36965_3_thumbnail.jpg) is not within the allowed path(s): (/home/wwwroot/uedsc.com/:/tmp/:/proc/) in /home/wwwroot/uedsc.com/wp-content/themes/mwst/loop.php on line 15

    文字设计技巧!如何让文字排版更具易读性

    在视觉设计工作中,大家总习惯将重点放在图标和色彩上。但实际上,作为一个阅读类app,思考如何让文章更易于阅读是和图形、色彩处理同等甚至更为重要。

    • 文字设计技巧!如何让文字排版更具易读性
    • 文字设计技巧!如何让文字排版更具易读性
    • 文字设计技巧!如何让文字排版更具易读性
    • 文字设计技巧!如何让文字排版更具易读性
    VanXaviera · 发布于 2016-05-16 · 浏览 1352 · 评论 0
    Vincent · 发布于 2016-07-05

    环境搭建:php7.0.8 + Apache2.4 + MySQL5.7.13 + phpMyAdmin4.6.3

    这篇文章将为大家分享,手把手教你搭建PHP经典开发环境,php7.0.8 + Apache2.4 + MySQL5.7.13 + phpMyAdmin4.6.3…

    Vincent · 发布于 2016-07-06

    Java Web的安全验证机制

    部署描述符中的security-constraint元素允许不通过编程就可以限制对某个资源的访问。

    JBoss下WebService开发
    Vincent · 发布于 2016-07-06

    JBoss下WebService开发

    JAVA EE为webService提供了两种不同的编程模式,EJB容器模式及web容器模式,EJB容器模式:在EJB项目的session bean类中实现。


    Warning: file_exists(): open_basedir restriction in effect. File(../uedsc/wp-content/uploads/post-thumbnail/147106_0_thumbnail.jpg) is not within the allowed path(s): (/home/wwwroot/uedsc.com/:/tmp/:/proc/) in /home/wwwroot/uedsc.com/wp-content/themes/mwst/loop.php on line 15

    Warning: file_exists(): open_basedir restriction in effect. File(../uedsc/wp-content/uploads/post-thumbnail/147106_1_thumbnail.jpg) is not within the allowed path(s): (/home/wwwroot/uedsc.com/:/tmp/:/proc/) in /home/wwwroot/uedsc.com/wp-content/themes/mwst/loop.php on line 15

    Warning: file_exists(): open_basedir restriction in effect. File(../uedsc/wp-content/uploads/post-thumbnail/147106_2_thumbnail.jpg) is not within the allowed path(s): (/home/wwwroot/uedsc.com/:/tmp/:/proc/) in /home/wwwroot/uedsc.com/wp-content/themes/mwst/loop.php on line 15

    Warning: file_exists(): open_basedir restriction in effect. File(../uedsc/wp-content/uploads/post-thumbnail/147106_3_thumbnail.jpg) is not within the allowed path(s): (/home/wwwroot/uedsc.com/:/tmp/:/proc/) in /home/wwwroot/uedsc.com/wp-content/themes/mwst/loop.php on line 15

    分享几款唯美的中文字体

    不可否认,中文的文字排版始终没有英文那么好看,但是不知道你有没有想过,是不是我们使用的字体的问题,没有选择合适的字体,这篇文章将为您分享几款唯美的中文字体。

    • 分享几款唯美的中文字体
    • 分享几款唯美的中文字体
    • 分享几款唯美的中文字体
    • 分享几款唯美的中文字体
    问说网 · 发布于 2016-07-12 · 浏览 1331 · 评论 0
    Mac的VIM中delete键失效的原因和解决方案
    问说网 · 发布于 2016-08-16

    Mac的VIM中delete键失效的原因和解决方案

    在Mac的键盘上实际是没有backspace这个键的。其实Mac的delete就是Windows的backspace,实现的都是向左删除的功能。Mac上如果要实…

    详解MHA在Mac上的安装编译和配置
    问说网 · 发布于 2016-07-15

    详解MHA在Mac上的安装编译和配置

    MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用,在宕机的时间内,完成故障切换,部署MHA可避免主从一致性问题,…

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    秋末残雪

    问说网开源项目文档作者,关注WordPress、网站建设

    106 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 3399

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 3128

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 3273

    图片素材

    关注 图片素材

    文章 29463 · 浏览 2649

    高清图片

    关注 高清图片

    文章 26530 · 浏览 2865

    更多 推荐作者

    关注 惢碎葬爱

    文章 96 · 评论 0

    关注 怎麽继续

    文章 90 · 评论 2

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 走了留下什么

    文章 110 · 评论 0

    关注 莪很迷茫

    文章 97 · 评论 0

    关注 流浪的脚步

    文章 86 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

    感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

    您的反馈我们已收到!

    感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!