在 WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...第13讲关于 WP_Query 类的所有属性: query保存由 WP 类传递给 wp_query 对象的查询字符串。...query_vars包含 query 解析之后的关联数组,即一个由查询变量和其对应值组成的数组。...$found_posts 匹配当前查询参数而找到的文章总数。
虽然每个站点都不同,但下面是一个默认 Wordpress 安装主页的示例基准测试,其中包含和不包含 Redis,如本指南中配置的那样。Chrome 开发人员工具用于在禁用浏览器缓存的情况下进行测试。...的默认 WordPress 主页: 804ms 页面加载时间 带有 Redis 的默认 WordPress 主页: 449ms 页面加载时间 注意:这个用于 WordPress 的 Redis 缓存实现依赖于一个注释良好的第三方脚本...首次加载 WordPress 页面时,会在服务器上执行数据库查询。Redis 会记住或缓存此查询。...对象缓存通过在内存中缓存加载 WordPress 页面所需的 SQL 查询来工作。 当页面加载时,生成的 SQL 查询结果由 Redis 从内存中提供,因此查询不必命中数据库。...安装目录: sudo mv object-cache.php /var/www/html/wp-content/ 根据您的 WordPress 安装,您的位置可能会有所不同。
内存级的数据本地化(Data Locality)访问性能; 基于 Namespace 粒度的读写缓存策略以及 Hive Table 级别预热; 与 HDFS 一致的 Ranger 鉴权机制; 对象存储 AZ 级别的加速访问与高...2 加速基于Hive、Spark SQL 和Presto数据仓库查询业务 很多大数据客户的数据仓库类业务具备明显的冷热周期特征,例如:某大数据客户每天会定时基于数仓生成日报报表,Hive 表的分区是日期维度...,wp_access_date_sk bigint,wp_autogen_flag string,wp_customer_sk bigint,wp_url string,wp_type string,wp_char_count...预热完成后,就可以正常的执行查询任务,获得 GooseFS 的本地缓存加速性能。...同时,GooseFS 提供了 Hive Table & Partition 级别的预热能力以及缓存策略管理,能够极大地方便用户完成数据预热和访问加速。
内存级的数据本地化(Data Locality)访问性能; 基于 Namespace 粒度的读写缓存策略以及 Hive Table 级别预热; 与 HDFS 一致的 Ranger 鉴权机制; 对象存储 AZ 级别的加速访问与高...2 加速基于Hive、Spark SQL和Presto数据仓库查询业务 很多大数据客户的数据仓库类业务具备明显的冷热周期特征,例如:某大数据客户每天会定时基于数仓生成日报报表,Hive 表的分区是日期维度...,wp_access_date_sk bigint,wp_autogen_flag string,wp_customer_sk bigint,wp_url string,wp_type string,wp_char_count...预热完成后,就可以正常的执行查询任务,获得 GooseFS 的本地缓存加速性能。...同时,GooseFS 提供了 Hive Table & Partition 级别的预热能力以及缓存策略管理,能够极大地方便用户完成数据预热和访问加速。
加载 WordPress 环境(核心文件,类库之类的) require_once( dirname(__FILE__) ....创建 WordPress 查询 wp(); // Load the theme template. // 加载模板 require_once( ABSPATH . WPINC ....它会把 wp-config.php,wp-setting.php,classes.php,fucntions.php, query.php 等文件加载进来,并建立了三个全局变量,wp_the_query...,wp_rewrite 和 2....调用 wp() 函数,这个函数会调用 $wp 所属 WP 类的 main 方法, 这个方法又调用一系列方法,但最重要的是 parse_request 方法,WP 从这里开始解析 URL 并建立主循环。
此外,Hadoop 依赖于社区服务器,因此它的成本比较低,且开源,任何人都可以使用。...Google File System中文版 http://blog.bizcloudsoft.com/wp-content/uploads/Google-File-System%E4%B8%AD%E6%...%E4%B8%AD%E6%96%87%E7%89%88_1.0.pdf Google Bigtable中文版 http://blog.bizcloudsoft.com/wp-content/uploads...Shuffle阶段:把键值对进行归类,也就是把所有相同的键的键值对归为一类。这个步骤的输出是不同的键和该键的对应的值的数据流。 Reduce阶段: 输入当然是shuffle的输出。...然后Reduce阶段调用用户实现的函数,叫做Reducer,对每个不同的键和该键的对应的值的数据流进行独立、并行的处理。每个reducer遍历键对应的值,然后对值进行“置换”。
类是对象的抽象化!对象是类的具体化! 类仅仅表明这类对象有哪些属性,但是不能有具体的值,所以类是抽象的。 对象是将类的所有属性赋值后,产生具体的个体,所有对象是具体的。...创建Custom Post Type的方法 WP_Post_Type 是WordPress中的一个核心类,处理所有关于Post Type的各种操作。...我们使用自定义文章类型的时候,要 new 出一个这个类的对象来,有了对象,接来了的操作就是围绕着这个对象进行的了,一般我们不直接使用 new WP_Post_Type 方法来创建对象,而是使用 register_post_type...在创建的时候,可以把不同用途的参数归入一类再统一加入$args中,这样代码的可读性会比较好。...和public值相关的参数 注册新的post type时,有些参数是比较重要的,有些参数会依赖于别的参数的值。
静态页面,日志和附件都是内容,WordPress 把它们都放在一个表中 -- wp_posts。...静态页面,日志和附件可以很相似,也可以很不同。现在,我们要看到在它们之间的共同之处。...* FROM wp_posts WHERE post_type = ‘page’ LIMIT 1 SELECT * FROM wp_posts WHERE post_type = ‘attachment...’ LIMIT 1 如果使用的是 MySQL 命令行工具,那么你最好在查询语句的后面中添加 “\G” (”SELECT * FROM wp_posts WHERE post_type=’post’ LIMIT...下面是一些你可以只利用 wp_posts 表进行操作的想法: 产生一些统计 -- 总共有多日志,每种类别的日志分别有多少,每个作者发表的日志有多少,在一段日期内平均每天有多少篇日志等等。
如何缓存 WordPress 主循环 首先在 posts_pre_query filter 基于查询参数 query_vars 创建缓存的 cacke_key。...并且使用该 $cache_key 查询一下内存中是否已有相关数据,如有直接返回数据,WordPress 就不会到数据库查询了。...这样下次 WordPress 在此查询相同的数据的时候,在 posts_pre_query filter 就会直接返回。...因为每次不同查询的 cache_key 都是不同,且和文章没有任何相关性。...期间考虑过把这类的 cache_key 全部放到一个地方,然后文章有更新,一次性把这些 WordPress 中有个 wp_cache_get_last_changed 函数,它使用来存储一类 cache_group
WP_Query。...query_posts 存在的问题 使用 query_posts 直接修改 WordPress 默认的主循环很方便,只要把对应的参数传递给函数即可,主循环的查询即可按照新的参数去查询,但是这样会造成以下的问题...使用 WP_Query 自定义查询 所以最好的方法是使用 WP_Query 来创建自定义 WordPress 查询,这样创建的查询和 WordPress 主循环隔离开,并不会影响主循环的行为。...> 上面代码定义了一个叫做 recent_query 的变量,它是类 WP_Query 的一个实例,然后我使用了 WP_Query 的一个方法 query 创建一个新的查询,它的参数和 query_posts...> 简单总结 使用 WP_Query 创建自定义 WordPress 查询是不会干扰默认的 WordPress 主循环,使用它我们完全可以在一个页面同时运行两个或者以上完全独立的 WordPress
而说到复杂点的用法,你甚至可以利用query_posts来查询某一分类目录下某个作者发表的、带有某个标签的特定数量文章等。下面介绍的是一些更实用的用法。...最恰当的方法是使用query查询类。 不同调用方法 传统的文章调用方法是以查询字符串形式传递query_posts参数(如variable1=value1&variable2=value2&…),不过后来有了新方法——用数组来设置查询参数。...抓取所有文章 你可以用几种不同的方法在网站地图和存档页等需要显示所有已发布文章的地方调用所有文章。 要调用所有已发布的文章,可以使用下面的这段代码: 查询前,应用于将返回日志数组的整个SQL查询 posts_where_paged 应用于查询的WHERE语句。
WP_Query 是 WordPress 中最重要的 class,几乎每个页面都是用它来获取文章,但是它最大的问题是,对文章进行查询的时候是直接到数据库查询的,结果没有被缓存起来,所以真正实现站点的 0SQL...WP_Query 实现数据库查询缓存 WordPress 6.1 改进了 WP_Query 类中数据库查询的执行方式,实现 SQL 查询缓存,这意味着如果多次运行同一条 SQL 查询,查询结果将从缓存中加载...如何禁用缓存 值得注意的是,在默认情况下,WP_Query 的所有数据库查询都将被缓存,如果想不缓存,只需将 cache_results 参数设置为 false 即可: $query = new WP_Query...get_page_by_title 直接使用 WP_Query get_page_by_title 函数在 6.1 版本也改用 WP_Query 来获取数据,之前,该函数直接使用 SQL 查询来实现通过标题获取页面...,从上可知,WP_Query 查询结果将会被缓存,这意味着现在调用 get_page_by_title 也将会被缓存,当然所有通过 WP_Query 获取数据的函数也将被缓存。
, "data": { "status": 500 }}这种情况就是有请求到路由,但是路由的回调函数有问题,我这里是在类 class 里注册的路由,路由自身的方法要用 $this...WP_Error类的第一个参数不能设为0接口校验不通过时,我们会选择直接 return 一个 WP_Error 对象,但是要注意 WP_Error 的第一个状态码如果是字符串数字会被直接转成数字,切记不能设置为数字或字符串...WP_Query 和 WP_Comment_Query 中的 no_found_rows 参数WP_Query 和 WP_Comment_Query 这两个查询类里,其实都有这个参数no_found_rows...,是用来禁止 SQL_CALC_FOUND_ROWS 查询(这个玩意就是用来计算咱分页查询的总条数的,据说性能不高)。...能用$this的地方一定使用self,能用self的地方不一定能用$this,静态的方法中不能使用$this,静态方法给类访问的。
URI: 主题的网址 Author: 作者的名称 Author URI:作者的网址 Description: 主题的简介 Version: 1.0 版本信息 主题默认能够识别的文件名 名称 模板名称...默认查询/主查询(wp自动的) print :php查询语法 wp_query: wp的默认查询语法 3.分类目录归档页查询 [ query object ] 存储分类目录的原始/本身的(详细)信息 [ posts ] 分类目录当前页...post ] 分类目录文章下的第一篇文章 [ is ] 开头的函数说明: [is_xxx] => 1,如果后面箭头=> 1,则表示xx对应类型的网页 例子: [is_archive] => 1 归档类页面...默认查询的总结 默认查询: $wp_query -> posts -> post 被查询对象:(wp_query查询出来的) get_queried_object() get_queried_object_id
查询内容:https://developer.wordpress.org/reference/classes/wp_query wp_comments-query评论查询:https://developer.wordpress.org.../ 官方开发文档:https://developer.wordpress.org/themes/basics/theme-functions/ 主题相关 1.如何为不同分类的页面显示不同的模板。...文章页面默认调用的是single.php,可以在single.php里判断不同的分类,include不同的模板文件。...,将会修改wordpress主查询的指向: wp_reset_query用于重置主循环的指针。...php wp_is_mobile(); 25.获取查询对象 <?
若Y不函数依赖于X,则记作 X \nrightarrow Y。...6.2.3 范式 关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。 第一范式(1NF): 每一个分量必须是不可分的数据项,第一范式是对关系模式的最起码的要求。...若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。 ⽐如在设计⼀个订单数据表的时候,可以将客户编号作为⼀个外键和订单表建⽴相应的关系。...没有任何属性完全函数依赖于非码的任何一组属性。...5.求解关系模式的候选码 属性分类: L类:只出现在函数依赖的左边的属性 R类:只出现在函数依赖的右边的属性 N类:在函数依赖的两边均未出现的属性 LR类:出现在函数依赖的两边的属性 对于给定的关系模式
我们再写 SQL 的时候,最常碰到一个问题就是,把查询条件放到 JOIN 子句和放到 WHERE 子句有什么不同呢?...比如: 查询条件放到 JOIN 语句: SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts JOIN wp_skus sku ON sku.post_id...'publish' ORDER BY sku.price DESC, wp_posts.post_date DESC LIMIT 0, 10 查询条件放到 WHERE 语句: SELECT SQL_CALC_FOUND_ROWS...DESC LIMIT 0, 10 结果分两种情况: INNER JOIN:简单说如果使用的是 INNER JOIN,这两种查询的结果相同。...OUTER JOIN:如果使用的是 OUTER JOIN,可能会不同,比如上面的 SQL 改成 LEFT JOIN,并且连接条件失败,则查询条件放到 JOIN 子句仍将获得一行,但是如果放到 WHERE
由于这是一个服务级别的调整,性能影响会小于使用调试插件,但当不用的时候也应该关闭。 理解 一旦你找到了一个你要花很大代价找到的查询,那么接下来就是尝试去理解它并找到是什么让查询变慢。...例如,pm2表((wp_postmeta),告诉我们是Using filesort,因为我们使用了 ORDER BY语句对结果进行了排序。如果我们要对查询结果进行分组,这将会给执行增加开销。...去连接wp_woocommerce_software_licences表和wp_posts表。...基本上,首次请求时从数据库中获取查询结果,并将其存储在类的静态属性中,然后后续的查询语句调用将从静态属性中返回结果: 缓存有一个生命周期,具体地说是实例化对象有一个生命周期。...如果您有大量数据和许多不同的自定义帖子类型,WordPress可能会在wp_posts表上减慢查询速度。
由于这是一个服务级别的调整,性能影响会小于使用调试插件,但当不用的时候也应该关闭。 理解 一旦你找到了一个你要花很大代价找到的查询,那么接下来就是尝试去理解它并找到是什么让查询变慢。...它自动将查询的问题用颜色着重表示提醒用户去注意。我们可以马上看到,连接wp_woocommerce_software_licences(别名l)的表有严重的问题。...去连接wp_woocommerce_software_licences表和wp_posts表。...基本上,首次请求时从数据库中获取查询结果,并将其存储在类的静态属性中,然后后续的查询语句调用将从静态属性中返回结果: ? 缓存有一个生命周期,具体地说是实例化对象有一个生命周期。...如果您有大量数据和许多不同的自定义帖子类型,WordPress可能会在wp_posts表上减慢查询速度。
由于这是一个服务级别的调整,性能影响会小于使用调试插件,但当不用的时候也应该关闭。 理解 一旦你找到了一个你要花很大代价找到的查询,那么接下来就是尝试去理解它并找到是什么让查询变慢。...例如,pm2表((wp_postmeta),告诉我们是Using filesort,因为我们使用了 ORDER BY语句对结果进行了排序。如果我们要对查询结果进行分组,这将会给执行增加开销。...解决 你应该避免这种全部表浏览的查询,因为他使用非索引字段order_id去连接wp_woocommerce_software_licences表和wp_posts表。...基本上,首次请求时从数据库中获取查询结果,并将其存储在类的静态属性中,然后后续的查询语句调用将从静态属性中返回结果: classWC_Software_Subscription{ protectedstatic...如果您有大量数据和许多不同的自定义帖子类型,WordPress可能会在wp_posts表上减慢查询速度。
领取专属 10元无门槛券
手把手带您无忧上云