在 WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。...meta_value – 按照自定义字段排序,请先确保在查询中已经设置了 meta_key,额外要注意,是按字母顺序排列的,这对于字符串来说没有问题,但对于数字可以结果不是你预期的,(例如结果是 1、3...post__in – 按照 post__in 参数中给出的文章 ID 顺序进行排序,注意使用 post__in,order 参数的值无效。
在WordPress中,有一个直接可用的方式来添加自定义字段,那就是使用自带的“自定义字段”功能。 WordPress允许用户为文章、页面、分类目录等添加自定义字段。...使用自带的自定义字段功能的优点是直接可用,无需安装插件,操作简单,可以满足一些基础的扩展需求。 当然,自定义字段也有局限。...需要注意的是,为了提高查询效率,用户可以为自定义字段添加索引。例如,如果用户经常查询某个自定义字段的值,可以为meta_key字段添加一个普通索引,以便加快查询速度。...安全性:自定义字段的设计应该考虑数据的安全性和隐私性,例如加密、权限控制等。 性能优化:自定义字段的设计应该考虑查询性能和响应时间,例如添加索引、合理使用缓存等。...总之,自定义字段是WordPress字段扩展的一种常用方式,它的表设计采用wp_postmeta表,包括meta_id、post_id、meta_key和meta_value字段。
在 WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。...简单自定义字段查询 获取自定义字段的 key 是 'color',而 value 则任意值都可的文章: $query = new WP_Query( array( 'meta_key' => 'color...meta_query 的时候,需要传递嵌套数组,即使只有一个自定义字段查询的时候,也是一样。
几乎所有文章浏览统计插件,比如 WPJAM Basic 的「文章浏览统计」扩展,都是使用自定义字段来存储文章浏览数的,如果服务器开启了 Memcached 内存缓存,自定义字段的数据是怎么被缓存呢?...WordPress 默认的自定义字段缓存方式 WordPress 会以 $post_id 作为 cache_key,'post_meta' 作为 cache_group 整体进行缓存。...而每次文章浏览,这个自定义字段数据都会加 1,这样,每次自定义字段的缓存都会更新,然后就会造成每个页面会多出三个 SQL 查询。 有没有办法解决这个问题呢?...使用内存缓存优化文章浏览统计效率 我们可以把文章的浏览统计先缓存到内存中,每次增加10次浏览才写入数据库中去,这样就可以极大地降低 WordPress 操作因为自定义字段变更而造成 SQL 查询次数。...', function($check, $post_id, $meta_key, $meta_value){ if($meta_key == 'views'){ if($meta_value %
然而在这样一个工程中,它的可拓展性是从何而来的呢?下面的篇幅尝试从两个方面简单介绍WordPress的可拓展性。...这两个方面不仅可以帮助我们编写WordPress的插件,同样可以帮助我们设计具有可拓展性的架构。 1....我们可以尝试使用行列转换的思路,把原来表中的行转换成列,把原来表中的列转换成行。 在WordPress中有一个表专门用于存储文章的元信息,名称叫做 wp_postmeta 。...,查询时也要牵扯到两个表的结合,会拖慢数据库的执行效率。...最后是数据库结构检查,一般情况下,我们可以利用 NOT NULL 来规定某一列必须有一个值,而使用上面提到的方式,就必须由Web应用程序来进行这样的检查了。
wordpress默认会根据网址调用数据,不能满足我们所有建站要求,而WP_Query可以用于查询任何你想要的内容,相当于自定义数据调用。 wordpress的主循环 使用 get_query_var('page'); 如果查询在设置为首页的页面模版中工作,查询参数 'page' 拥有文章分页或内容中使用 meta_key=keyname' 必须也出现在查询中. 注意排序是按照字母表顺序进行的。...//'meta_value_num' - 根据数字meta值排序 (2.8和以后的版本中可用). 同时需要注意'meta_key=keyname' 也要在查询中声明。...通过设置这个参数为真,我们告诉了了WordPress不要查询数据总行数,从而降低数据库负载,如果设置了这个参数为真,分页将不工作,更多信息请参考:http://flavio.tordini.org/speed-up-wordpress-get_posts-and-query_posts-functions
我前面发布的 WordPress 配置器,其中一个很重要的功能就是让你更灵活方便的使用 Post Meta 和 Term Meta,只要用会和用好它,你就才真正掌握 WordPress 的精髓。...那么你的 WordPress 就开始非常慢了。 所以 WordPress Meta API 一直存在直击灵魂的三连问: 系统用了哪些 Meta 字段? 每个 Meta 字段被使用了多少次?...每个 meta_key 使用的数量。...这样我们就能对自己系统的情况了然于胸了,并结合目前系统的状态,如果哪个 meta_key 已经不再使用,就可以点击删除,就可以把使用该 meta_key 的所有 Meta 数据都删除。...这里点击 meta_key 过滤之后的列表,和前面汇总模式下点击查看进入的列表式样的。
其中 [2d70a62b-38ba-4a11-82e6-175abfcf3391.png-w331s] 图片的post_id被带入查询,$wpdb->prepare中使用了sprintf,会做自动的类型转化...= 'payload' 之后这条语句会进入查询,结果为真代码才能继续,所以要修改_thumbnail_id对应的meta_value的值为payload,保证有查询结果。...此问题可能仍会出现在WordPress的插件,原文的评论中也有人提到曾在Joomla中发现过类似的问题。而其他使用sprintf进行字符串拼接的cms,同样可能因此导致SQL注入和代码执行等漏洞。...= %s $value_clause", $meta_key ) ); } 如果输入 $meta_value = ' %s '; $meta_key = ['dump', '...在WordPress 4.8.3的补丁中,一是修改了meta.php中两次使用prepare()的问题,二是使用随机生成的占位符替换%,在进入数据库前再替换回来。
在 WordPress 主题的开发过程中,获取用户 ID 的频率是很高的,可在 WordPress 中查看用户信息,也可以通过代码直接获取。...一、在 WordPress 后台区域找到用户 ID 这是一个非常简单的方法,需要有后台管理权限的用户才能查看。...等) 获取当前登录用户ID的最佳方法是使用get_current_user_id()函数。...;} 如果您想通过任何用户元值查找用户ID,那么上面的代码可以工作。只需将meta_key和meta_value替换为您需要的。...当然,在get_user_meta( $id, $meta_key, true)函数的帮助下,你也可以得到用户的姓和名以及任何meta。
在WordPress独立站中,展示最新产品、最热门产品和推荐产品是吸引用户和促进销售的重要手段。以下是三种实现这些功能的方法:1....使用WooCommerce内置功能如果你的WordPress站点使用了WooCommerce插件来管理产品,你可以利用它的内置功能来展示这些产品。...最热门产品:WooCommerce没有直接的“最热门产品”短代码,但你可以通过查看销售量来手动选择热门产品,或者使用插件来自动根据销售量排序。...使用自定义查询和WP_Query如果你需要更灵活的控制,可以通过自定义查询来实现。...Ultimate WooCommerce:这个插件提供了许多额外的功能,包括产品展示。选择哪种方法取决于你的具体需求和技术水平。如果你不熟悉代码,使用插件可能是最简单的方法。
在 WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。...注意:如果 feed 中,则 WordPress 会使用存储的 "posts_per_rss" 选项覆盖此参数。...使用“较早的文章”链接时,显示通常仅在X页上显示的文章。 page (int) – 静态首面的第几页,显示通常仅在静态首页的第X页上显示的文章。
大部分 WordPress 都会安装 wp-postviews 插件来记录文章浏览量,这是一个很实用的插件。...global $wpdb; $count=0; $views= $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key...=' '){ $count+=(int)$meta_value; } } return $count; } 这个代码实现的原理是先把所有符合条件的 meta 字段全部查询了出来...所以我重新写了一个性能更好的函数,尤其是用于大量文章的网站的时候,代码如下: /** * WordPress 获取文章浏览总数优化版 By 张戈博客 * 文章地址:https://zhangge.net...='views'"); return $count; } 实现更加简单,直接使用 MySQL 的 sum 方法计算浏览总数,一步到位。
多人作者的 WordPress 在后台编辑文章,如果有其他用户也在编辑,在文章列表页会提示下面的信息: WordPress 的文章编辑锁定功能 这个就是 WordPress 的文章编辑锁定功能,提示当前谁在编辑这篇文章...,如果继续点击进去,WordPress 会再次提示如下的信息: 这样就防止多人编辑文章产生了冲突,那么 WordPress 是怎么实现这个功能的呢?...WordPress 将当前编辑文章的用户ID 和时间戳存到一个叫做 _edit_lock 的自定义字段中,然后简单判断现在的时间戳减去存储的时间戳是否在 150 秒之内,如果是,就显示上面的信息。...使用内存缓存优化文章编辑锁定 所以每次更新文章,WordPress 都会更新 _edit_lock 的这个自定义字段,因为这个字段没有其他用途,每次都需要更新,其实也是一种浪费。...对于这类「锁」的字段,更好的方法是存到内存中,使用内存缓存的特性来优化整个过程: 将下面的代码复制到当前主题的 functions.php 文件中,就可以使用内存来优化处理这个过程了: add_filter
' => 10, //(整数) - 每页显示的文章数量 (2.1和以后的版本可用), 使用'posts_per_page'=-1 显示所有文章,如果查询处于订阅源中,WordPress用 'posts_per_rss...//注意:使用 get_query_var('page'); 如果查询在设置为首页的页面模版中工作,查询参数 'page' 拥有文章分页或内容中使用 meta_key=keyname' 必须也出现在查询中. 注意排序是按照字母表顺序进行的。...//'meta_value_num' - 根据数字meta值排序 (2.8和以后的版本中可用). 同时需要注意'meta_key=keyname' 也要在查询中声明。...通过设置这个参数为真,我们告诉了了WordPress不要查询数据总行数,从而降低数据库负载,如果设置了这个参数为真,分页将不工作,更多信息请参考:http://flavio.tordini.org/speed-up-wordpress-get_posts-and-query_posts-functions
wp_users:存储用户信息 删除残留垃圾数据 使用WordPress经常换主题删主题,装插件删插件很正常,但是简单的删除并不彻底,数据库会有残留,多余的数据保留在post_meta表格里,久而久之就成了一堆可观的垃圾...可使用下面的SQL语句来清除不需要的postmeta值。有益于加快数据库运行速度,减小数据。...执行SQL语句 DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock'; DELETE FROM wp_postmeta WHERE meta_key...= '_edit_last'; 删除草稿修订版本 在WordPress后台中编辑文章时,系统会自动保存许多修订的副本。...处理未使用的标签 在WordPress数据库中,如果你使用一个查询语句手动来删除旧的文章,旧的标签却仍然会保留并在你的标签云/列表中出现。你可以使用下面的方法识别未使用的标签并将它删除。
什么是 WordPress Transients API Transients 是瞬时的意思,WordPress Transients API 是 WordPress 用来缓存一些复杂的 SQL 查询和运算结果的最简单的方法...WordPress Transients API 的函数 上面说到服务器没有开启的时候,数据是存储到 Options 表中的,所以它接口函数和 WordPress 的 Option API (get_option...delete_transient() // 从缓存中删除一个临时数据 如果你使用函数 get_transient 去获取一个临时变量,它已经过期或者不存在,则返回 false。...WordPress Transients API 例子 假设你要获取博客的流量最高的 10 篇文章,这个要设计复杂的 SQL 查询,而流量最高的 10 篇文章一般来说在一段时间(比如:12小时)之内是不会变化的...如果由于某种原因某篇流行文章删除,或者新的文章发布了,这个时候可能流量最高的文章都可能发生变化,我们需要使用 delete_transient 函数把这个临时变量删除了。
折腾 WordPress 多少要接触到 MySQL 的一些操作,比如,玛思阁之前重装 postview 插件后发现所有的 view 数据都被清空了!...只好到 phpMyAdmin 后台去进行 wp_postmeta 表的部分数据恢复,其中就会用到下文【根据条件导出 mysql 的指定表】的方法,将 meta_key=views 的栏位对应的 meta_value...根据条件导出 mysql 的指定表(即部分数据导出,WordPress 网站应该用得到): mysqldump -h mysql服务器IP -u用户名 -p密码 数据库名表名 --where="筛选条件...">导出文件路径; 恢复方法:先用 “use dbname” 选定数据库,然后使用 “source sql 的文件路径”命令即可恢复。...例:从 wp_blog 数据库的 wp_postmeta 表中导出 meta_key=views 的数据到 /home/xyx/Temp.sql 这个文件中 mysqldump -uroot -p123456
WordPress 查询参数分公开(Public)和私用(Private),公开就是可以博客链接加入参数就可以查询数据,而私有只能在代码中通过参数传递 WP_Query class。...WordPress 的公开查询参数 attachment attachment_id author author_name cat calendar category_name comments_popup...的私有查询参数 category__in category__not_in category__and comments_per_page offset perm post__in post__not_in...meta_value WPJAM Basic 新增的公开查询参数 把 tag_id 设置为公开查询参数。..._id' 也会自动被设置为公开查询参数。 添加了 module 和 action 这两个 Public Query Vars,用于插件的路由规则。
怎么批量删除WordPress自定义栏目?ordPress自定义栏目功能强大,我们可能利用该功能使主题实现特殊功能和效果,如调用显示指定的图片和内容等。...但不同的主题所使用的自定义栏目也不同,当你更换主题后这些自定义栏目数据会继续留在数据库中成为垃圾数据,如果文章较多手动删除这些自定义栏目不现实,其实只需下面的一段代码,即可批量删除这些自定义栏目。...` = '自定义栏目名称'" ); 2、之后,指定删除的自定义栏目会自动从数据库中被清理掉。...4、WordPress自定义栏目的批量删除: DELETE FROM wp_postmeta WHERE meta_key = "栏目名称"; 5、自定义栏目的名称替换 UPDATE wp_postmeta...SET meta_key = replace( meta_key, '旧名称','新名称') ; 6、自定义栏目的值替换 UPDATE wp_postmeta SET meta_value = replace
我们知道 WordPress 的数据库表,可以设置前缀,默认是 wp_,很多同学也就默认用了 wp_,如果某种原因(比如提高安全性)要修改的 WordPress 数据的前缀,我们应该怎么做?...开始之前 修改数据是一件风险很高的工作,开始之前必然就是做好数据库备份,也可以把博客设置为维护状态。...使用下面语句把 options 表中的 option_name 以 wp_ 开头的值改成 wpjam_ 开头。...SELECT REPLACE(option_name, 'wp_', 'wpjam_') FROM wpjam_options; 修改 UserMeta 表中的数据 使用下面语句把 UserMeta 表中的...meta_key 以 wp_ 开头的值改成 wpjam_ 开头。
领取专属 10元无门槛券
手把手带您无忧上云