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

秋末残雪 · 发布于 2015-04-26 · 字数6620 · 浏览 3975 · 评论 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-12-22Appjs-platform支持打包成应用程序
  • 2016-06-25分享20款优秀的Web移动开发框架
  • 2016-07-06SSH环境搭建
  • 2016-07-06JBoss下WebService开发
  • 2016-07-12分享10个在使用Photoshop过程中的小技巧
  • 2016-07-15使用JavaScript脚本将字母转换为摩尔斯电码
  • 2016-08-16程序员高效技巧系列之完全脱离鼠标的终端
  • 2016-07-15MySQL5.6 GTID新特性实践
  • 发布评论

    为您推荐

    问说网 · 发布于 2015-11-11

    Mobile-Detect轻量级的浏览器设备检测PHP类

    Mobile Detect 是一个轻量级的开源移动设备(手机和平板)检测的 PHP Class,它使用 User-Agent 中的字符串,并结合 HTTP He…

    微软开源WinJS开发者必须知道的5件事
    问说网 · 发布于 2015-12-31

    微软开源WinJS开发者必须知道的5件事

    微软宣布将其现有的JavaScript框架WinJS开源,转身拥抱Web及移动应用开发者。本文列举出开发者需要密切注意的5件事,从WinJS的设计目的、优点,到…

    问说网 · 发布于 2016-02-02

    Node-Weibo基于Node.js的微博JavaScript版本SDK

    Node-Weibo 是一个 JavaScript 的微博 SDK,支持浏览器和基于 Node.js 的服务器环境运行,能够支持大多数的微博系统,比如新浪微博、…

    DIV+CSS实现双飞翼布局最简单方法
    问说网 · 发布于 2016-03-28

    DIV+CSS实现双飞翼布局最简单方法

    DIV+CSS早已是现在布局最常用的一种方式,可是布局又有许多种,因网站的功能、外表、适应人群而异,网站采用的布局也将是各式各样。常用的布局技术又有双飞翼布局、…

    梦寐以求!如何使用PS打造唯美的梦幻仙女

    今天我们将和朋友们一起来学习,如何使用PS打造唯美的梦幻仙女。您将学习如何制造氛围,并在一个场景融入不同的照片,调整颜色,使用图层蒙版,利用光线,创造出属于你的…

    • 梦寐以求!如何使用PS打造唯美的梦幻仙女
    • 梦寐以求!如何使用PS打造唯美的梦幻仙女
    • 梦寐以求!如何使用PS打造唯美的梦幻仙女
    • 梦寐以求!如何使用PS打造唯美的梦幻仙女
    NorthMavis · 发布于 2016-05-17 · 浏览 1249 · 评论 0
    洗面奶详情页设计教程
    AlsopRuth · 发布于 2016-05-20

    洗面奶详情页设计教程

    一直都没有写过教程,很多设计好友会问我做首页或者详情页是如何考虑的,其实难以启齿的就是我自己很难详细的说出个理所当然,毕竟干艺术的时而灵感爆发,时而半天也设计不…

    问说网 · 发布于 2016-07-07

    Fool.js恶搞整人网页特效jQuery插件

    Fool.js是一个 jQuery 插件,包含了几种页面特效,可以用来在愚人节的时候整人,来实现更多的更变态的愚人功能,当然你也可以使用这个插件完成更多好看的效…

    问说网 · 发布于 2016-07-12

    分享10个在使用Photoshop过程中的小技巧

    作为设计师,可能每天都需要和Adobe Photoshop打交道,这篇文章分享给大家10个在使用Photoshop过程中的小技巧,巧用这些方法将使你的设计锦上开…

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    秋末残雪

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

    106 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 3611

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 3342

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 3601

    图片素材

    关注 图片素材

    文章 29463 · 浏览 2865

    高清图片

    关注 高清图片

    文章 26530 · 浏览 3104

    更多 推荐作者

    关注 惢碎葬爱

    文章 96 · 评论 0

    关注 莪很迷茫

    文章 97 · 评论 0

    关注 籹孒不认输

    文章 94 · 评论 0

    关注 凉城梦镜

    文章 79 · 评论 0

    关注 思念像咒语

    文章 102 · 评论 0

    关注 失戀德標簽

    文章 92 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

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

    您的反馈我们已收到!

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