站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
WordPress查询语句概览
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
<span style="border:1px solid #000; text-align:center; float:right; padding:6px;"><strong>导航:</strong> [[WordPress插件及插件开发资源|上一页]] | {{Template:WordPress导航}}</span> <div style="clear:both;"></div> WordPress如何创建[[博客]]页面?插件又如何修改这一创建过程?本文对这两个问题进行了简要分析。文章针对即将进行高级查询和永久链接的插件开发人员以及希望进一步了解WordPress的开发人员,希望大家能通过本文的介绍进一步扩展WordPress的功能或修复WordPress中的BUG。 大家可以通过本文中提到的WordPress核心[[PHP]]文件和函数了解更多相关信息。 下面是WordPress决定网页显示内容(日志或是页面)的过程以及相关显示步骤: #访问者首次点击或输入我们某个博客页面的URL时,WordPress会执行一些核心文件(如(wp-config.php, wp-settings.php等)。执行任何一个PHP文件都会引发/包含其它PHP文件,因此对文件加载顺序的细节有兴趣的读者可以以index.php为起点,跟踪文件的反应链。 #WordPress加载我们所激活的插件并将插件初始化(调用插件的init动作函数)。 #出于对插件国际化的考虑,WordPress加载“文本域”,并从当前主题中加载functions.php文件。 #WordPress运行wp-includes/functions.php中的wp()函数。该函数将调用$wp->main()($wp是WP类的一个对象,$wp在wp-includes/classes.php中有定义)。根据这一步,WordPress会: #用WP->parse_request()将URL解析成一个查询说明 #通过$wp_query->parse_query()($wp_query是类WP_Query的一个对象,在wp-includes/query.php中定义)设置条件标签使用的所有is_ 变量。注意,由于WP->parse_request()已经事先完成了解析任务,因此WP_Query->parse_query()在这里不会再执行任何解析工作。 #在WP_Query->get_posts()函数中将查询说明转换为MySQL数据库查询,执行该数据库查询,获取日志列表。将日志保存在 $wp_query对象中,以便日后用于WordPress主循环中。 #处理[[404]]错误。 #发送博客的[[HTTP]]信息头。 #为WordPress主循环设置变量。 # WordPress加载我们的模板,根据模板层级决定应使用的模板文件,然后执行该模板文件(执行时基本上会依照模板文件的操作说明)。WordPress也可以执行某个feed文件来代替指定模板文件(比如wp-rss2.php)。 #一般情况下,模板文件或feed文件会执行WordPress主循环以显示博客日志或是某个[[静态页面]]。 #模板文件和feed文件还会显示一些存档、类别的永久链接或是使用内置WordPress函数的日志的永久链接。 WP->parse_request() '''详细信息''' 上文中提到, WP->parse_request()(wp-includes/classes.php文件中,WP类的一部分)将[[URL]]解析成一个查询说明。下面是对解析步骤的概括: #从[[URL]]中删去GET变量(例如,URL中“?”后的所有内容),网站主页URL中的GET变量也应删除。 #调用 $wp_rewrite->wp_rewrite_rules()($wp_rewrite是类WP_Rewrite的一个对象,在wp-includes/rewrite.php中定义)以获取当前有效的重写规则。重写规则是一系列关于WordPress永久链接格式的规定以及格式与规定相匹配时的操作说明。例如,假设现在有一个规则,该规则能够与删除变量后的永久链接(如category/abc)相匹配,且该规则说明表示,category/abc意味着请求“abc”类别。那么这也算是主页的一个重写规则(网站URL后没有其它内容)。 # 按顺序检查重写规则,直到找到某个重写规则与永久链接能相匹配。没有条件符合要求时返回[[404]]错误。如果有条件符合要求,WordPress会根据规则的说明摘取信息。 # 获取当前有效的查询变量列表。WordPress会检查所有查询变量,判断链接解析、日志提交或GET提交过程是否已经设定了这些变量。如果变量被设定,WordPress将变量值存入查询说明数组($wp->query_vars,wp-includes/classes.php中WP类的一部分)。 '''插件能够修改的内容''' 下面列出插件对以上默认查询和永久链接动作所具备的修改范围。 *添加、修改或删除重写规则,从而影响永久链接的解析方式。一般情况下插件会调用wp-includes/rewrite.php 中的函数(如add_rewrite_rule, add_rewrite_endpoint等)而不是用过滤器函数或动作函数来完成以上添加、修改或删除过程。因为WP_Rewrite->wp_rewrite_rules()通常只获取之前保存的重写规则(这些重写规则作为“rewrite_rules”选项被保存在WordPress数据库里)。因此如果我们要修改重写规则,首先要调用$wp_rewrite->flush_rules()强制进行重新计算。这一动作要在插件的init动作中完成。 *添加或删除查询变量,从而影响日志、GET变量和永久链接请求(query_vars过滤器)中查询说明所保存的变量。 保存变量值后,修改查询说明(request过滤器或parse_request动作函数;若希望使用条件标签检验,可使用parse_query或pre_get_posts动作函数。is_变量设置完毕后WordPress才运行这两个函数)。 *[[MySQL]]数据库查询从查询说明中生成后,插件可修改MySQL[[数据库]]查询(posts_where, posts_join, posts_groupby, posts_orderby, posts_distinct, posts_fields, post_limits, posts_where_paged, posts_join_paged, and posts_request 过滤器函数)。 *修改[[数据库]]查询的结果(the_posts过滤器)。 *改写默认模板文件的选择(template_redirect动作)。 ==相关条目== *[[Drupal]] *[[OBLOG]] *[[X-Space]] *[[SaBlog-X]] *[[Bo-Blog]] [[category:WordPress中文文档|C]] [[category:WordPress网站开发|C]] [[category:WordPress开发文档|C]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:WordPress导航
(
查看源代码
)(受保护)