当wordpress自定义文章类型的名称与外部javascript库或脚本使用的get参数名称冲突时,会导致功能异常。核心问题在于wordpress默认将文章类型名称用作查询变量。本文将详细阐述如何通过在 `register_post_type` 函数中设置 `query_var` 参数来有效解决此类冲突,从而在不更改文章类型名称的前提下,确保外部脚本和自定义文章类型都能正常运作。
在WordPress开发中,自定义文章类型(Custom Post Type, CPT)是组织网站内容的重要方式。当您使用 register_post_type() 函数注册一个自定义文章类型时,WordPress默认会以该文章类型的名称作为其查询变量(query_var)。这意味着,如果您有一个名为 accommodation 的自定义文章类型,WordPress在处理查询时可能会查找类似 ?accommodation=post_id 的URL参数来检索特定的文章。
问题在于,当一个外部JavaScript库或插件也依赖于一个与此自定义文章类型名称完全相同的GET参数时,就会发生冲突。例如,一个预订脚本可能期望通过 ?accommodation=room_type 来指定要预订的住宿类型。在这种情况下,WordPress的内部查询机制会与外部脚本的参数解析发生冲突,导致其中一方或双方功能失常。
原始的自定义文章类型注册代码可能如下所示:
register_post_type('accommodation', [
'labels' => $labels,
'public' => true,
'menu_icon' => 'dashicons-location-alt',
'supports' => ['title', 'revisions'],
'has_archive' => false,
'publicly_queryable' => true, // 导致冲突的关键设置
'rewrite' => [
'slug' => 'our-accommodations',
'with_front' => false,
'feeds' => false,
'pages' => false,
],
]);当 publicly_queryable 设置为 true 时,WordPress会尝试解析 accommodation 作为查询变量。如果此时外部脚本也使用 accommodation 作为其GET参数,那么就会出现冲突。虽然将 publicly_queryable 设置为 false 可以避免冲突,但这会阻止通过URL查询此自定义文章类型,从而限制其公开可用性,通常不是一个理想的解决方案。
解决此问题的关键在于 register_post_type() 函数中的 query_var 参数。这个参数允许您明确指定用于查询此自定义文章类型的GET变量名称,而不是默认使用文章类型本身的名称。通过为 query_var 设置一个与外部脚本不冲突的独特名称,您可以同时保留自定义文章类型的名称,并确保外部脚本的正常运行。
query_var 参数的作用:
r-accommodations-query=post_id,而不是 ?accommodation=post_id。以下是修改后的 register_post_type() 代码,通过设置 query_var 参数来解决冲突:
register_post_type('accommodation', [
'labels' => $labels,
'public' => true,
'menu_icon' => 'dashicons-location-alt',
'supports' => ['title', 'revisions'],
'has_archive' => false,
'publicly_queryable' => true,
'query_var' => 'our-accommodations-query', // 将查询变量改为不冲突的名称
'rewrite' => [
'slug' => 'our-accommodations',
'with_front' => false,
'feeds' => false,
'pages' => false,
],
]);在此示例中:
通过巧妙地利用 register_post_type() 函数中的 query_var 参数,开发者可以有效地解决WordPress自定义文章类型名称与外部JavaScript库或脚本GET参数之间的冲突。这种方法既能保留自定义文章类型的语义名称,又能确保网站所有组件的和谐共存和正常运作,是处理此类问题的专业且推荐的实践。掌握 query_var 的使用,将有助于您构建更健壮、更灵活的WordPress网站。
# javascript
# word
# java
# js
# wordpress
# 区别
相关文章:
攀枝花网站建设,攀枝花营业执照网上怎么年审?
孙琪峥织梦建站教程如何优化数据库安全?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何在云指建站中生成FTP站点?
如何配置WinSCP新建站点的密钥验证步骤?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
南宁网站建设制作定制,南宁网站建设可以定制吗?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
建站之星×万网:智能建站系统+自助建站平台一键生成
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
制作公司内部网站有哪些,内网如何建网站?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
家庭建站与云服务器建站,如何选择更优?
招贴海报怎么做,什么是海报招贴?
常州自助建站费用包含哪些项目?
建站之星官网登录失败?如何快速解决?
建站之星各版本价格是多少?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
,网站推广常用方法?
如何在企业微信快速生成手机电脑官网?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
C#怎么创建控制台应用 C# Console App项目创建方法
黑客入侵网站服务器的常见手法有哪些?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
广平建站公司哪家专业可靠?如何选择?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
如何选择美橙互联多站合一建站方案?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何快速搭建高效服务器建站系统?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
建站168自助建站系统:快速模板定制与SEO优化指南
常州企业网站制作公司,全国继续教育网怎么登录?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
建站之星安装需要哪些步骤及注意事项?
上海网站制作开发公司,上海买房比较好的网站有哪些?
公众号网站制作网页,微信公众号怎么制作?
如何高效完成自助建站业务培训?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
建站之星CMS建站配置指南:模板选择与SEO优化技巧
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何通过商城自助建站源码实现零基础高效建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。