最近项目需要,分析了一下Wordpress的特色图像 Feature Image的上传、保存方式,这一分析觉得Wordpress的数据结构设计还真是有想法。...先简单说一下结论: Wordpress中图像物理文件保存在 wp-content/uploads 目录下,相关信息保存在 wp_posts 表中。...这个表的表结构比较简单。 字段 含义 meta_id 元数据记录的ID。 post_id 就是元数据相关联的post,用户(user),评论(comment)的ID。...$meta_key . '-' . $single ....本文内容基于 Wordpress 4.8版本 参考资料: 1、如何设置Wordpress的特色图像 2、WordPress数据库表及字段详解 3、理解和利用 WordPress 中的元数据(Metadata
作者:西瓜玩偶(racnil070512 at hotmail dot com) WordPress是一个时下非常流行的网络信息发布平台,它的特性之一便是极强的可拓展性。...下面的篇幅尝试从两个方面简单介绍WordPress的可拓展性。这两个方面不仅可以帮助我们编写WordPress的插件,同样可以帮助我们设计具有可拓展性的架构。 1....这些元信息会直接体现在数据表的结构(schema)上。...元信息是灵活的,可是数据表的结构一旦定下就很难修改。那么我们怎样做才可以实现灵活的数据表结构呢? 我们可以尝试使用行列转换的思路,把原来表中的行转换成列,把原来表中的列转换成行。...在WordPress中有一个表专门用于存储文章的元信息,名称叫做 wp_postmeta 。它只有四列,分别为 meta_id 、 post_id 、 meta_key 、 meta_value 。
在WordPress中,有一个直接可用的方式来添加自定义字段,那就是使用自带的“自定义字段”功能。 WordPress允许用户为文章、页面、分类目录等添加自定义字段。...它是存储在wp_postmeta表中的,所有的自定义字段都混在一起,不够结构化。而且字段类型单一,扩展性有限。...meta_key:自定义字段的名称,以字符串类型存储。 meta_value:自定义字段的值,以字符串类型存储。 在wp_postmeta表中,每个自定义字段都对应一条记录。...例如,如果用户经常查询某个自定义字段的值,可以为meta_key字段添加一个普通索引,以便加快查询速度。...总之,自定义字段是WordPress字段扩展的一种常用方式,它的表设计采用wp_postmeta表,包括meta_id、post_id、meta_key和meta_value字段。
汇总模式 在汇总模式下,我们可以很快看到两个信息: 系统用了哪些 meta_key,分别是什么。 每个 meta_key 使用的数量。...这样我们就能对自己系统的情况了然于胸了,并结合目前系统的状态,如果哪个 meta_key 已经不再使用,就可以点击删除,就可以把使用该 meta_key 的所有 Meta 数据都删除。...并且支持搜索,会从 post_id,meta_key 和 meta_value 这些字段中进行搜索。...如果感觉数据繁杂,还可以点击 post_id 和 meta_key 进行过滤,查看单篇文章或者单个 meta_key 下面所有 meta 数据。...这里点击 meta_key 过滤之后的列表,和前面汇总模式下点击查看进入的列表式样的。
多人作者的 WordPress 在后台编辑文章,如果有其他用户也在编辑,在文章列表页会提示下面的信息: WordPress 的文章编辑锁定功能 这个就是 WordPress 的文章编辑锁定功能,提示当前谁在编辑这篇文章...,如果继续点击进去,WordPress 会再次提示如下的信息: 这样就防止多人编辑文章产生了冲突,那么 WordPress 是怎么实现这个功能的呢?..., $meta_value){ if($meta_key == '_edit_lock'){ return wp_cache_set($post_id, $meta_value, 'wpjam_post_edit_lock...', 300); } return $pre; },10,4); add_filter('get_post_metadata', function($pre, $post_id, $meta_key...){ if($meta_key == '_edit_lock'){ return [wp_cache_get($post_id, 'wpjam_post_edit_lock')]; } return
,他有价格(price)的参数,我们希望通过价格进行排序: $args = array( 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_key...经常会变动,我们让价格一样的商品再按照 ID 进行排序: $args = array( 'orderby' => 'meta_value_num ID', 'order' => 'ASC', 'meta_key...WP_Query( $args ); 也可以写成: $args = array( 'orderby' => ['meta_value_num'=>'ASC', 'date'=>'DESC'], 'meta_key
的数据库结构中,存储系统选项和插件配置的wp_options表是比较独立的结构,在后文中会提到,它采用了key-value模式存储,这样做的好处是易于拓展,各个插件都可以轻松地在这里存储自己的配置。...wp_usermeta这个拓展表和wp_options表有类似的结构,我们可以在这里存储每个用户的QQ号码、手机号码、登录WordPress后台的主题选项等等。...WordPress将所有的分类及分类方法、对应结构都记录在这三个表中。...wp_commentmeta meta_id:自增唯一ID comment_id:对应评论ID meta_key:键名 meta_value:键值 wp_comments comment_ID:自增唯一...载入时自动载入(yes/no) wp_postmeta meta_id:自增唯一ID post_id:对应文章ID meta_key:键名 meta_value:键值 wp_posts ID:自增唯一ID
我先说一下我的服务器崩溃经过,wordpress博客网站,宝塔输入了rm指令导致全服务器文件被删完,因为我是阿里云的服务器,所以我可以去找那边的工程师来达到紧急修复(这里也建议在商业化云服务那里购买主机的人一旦出现问题就找服务商工程师...),他们解决的很快,原本我以为服务器文件都删除了的,一切都不剩,但是经过了和工程师共同的努力,那边提供了我一个暂时盘,用于存储丢失的数据,最后就是我的所有数据都找回来了,但是,wordpress的数据库文件如果不备份的话...这里顺便介绍一下.frm文件与.ibd文件与.ibdata文件 .frm:与表相关的元数据信息都存放在.frm文件中,主要是表结构的定义信息,不论什么存储引擎,每一个表都会有一个以表名命名的.frm文件...修改innodb_force_recovery=6,一般这一段是没有的,所以你用搜索功能搜索[mysqld],然后在下面添加innodb_force_recovery=6 启动mysql服务,查看表结构...,这个时候你可以看见表结构已经恢复 mysql> desc wp_commentmeta; 导出表结构cmd mysqldump -uroot -proot data_rec weibo_twets
在 WordPress 主题的开发过程中,获取用户 ID 的频率是很高的,可在 WordPress 中查看用户信息,也可以通过代码直接获取。...一、在 WordPress 后台区域找到用户 ID 这是一个非常简单的方法,需要有后台管理权限的用户才能查看。...打印所有姓为“sa”的用户的 ID: global $wpdb;$users = $wpdb->get_results("SELECT user_id FROM $wpdb->usermeta WHERE meta_key...longlong”的用户的 ID: global $wpdb;$users = $wpdb->get_results("SELECT user_id FROM $wpdb->usermeta WHERE meta_key...只需将meta_key和meta_value替换为您需要的。 当然,在get_user_meta( $id, $meta_key, true)函数的帮助下,你也可以得到用户的姓和名以及任何meta。
这个表的结构是非常简单和灵活的。它只有四个字段:meta_id,post_id,meta_key 和 meta_value。...meta_key 是你想附加到日志上信息的描述(如 ‘mood(心情)’ 或者 ’song(歌曲)’)。 meta_value 是 meta 信息的实际内容(如 ‘Grumpy!’...或者 ‘The WordPress Song.mp3′)。 WordPress 使用这个表去存储附件的额外信息,这些信息不适合 wp_posts 表(附件的路径,缩略图信息,等等)。
在 WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。...第九讲关于自定义字段相关的参数,自定义字段相关的参数可以让你获取特定自定义字段的文章,相关的参数比较多,首先基本的参数: meta_key (string) – 自定义字段的 key。...简单自定义字段查询 获取自定义字段的 key 是 'color',而 value 则任意值都可的文章: $query = new WP_Query( array( 'meta_key' => 'color
WordPress 默认的自定义字段缓存方式 WordPress 会以 $post_id 作为 cache_key,'post_meta' 作为 cache_group 整体进行缓存。...使用内存缓存优化文章浏览统计效率 我们可以把文章的浏览统计先缓存到内存中,每次增加10次浏览才写入数据库中去,这样就可以极大地降低 WordPress 操作因为自定义字段变更而造成 SQL 查询次数。.../ 更新文章浏览数的时候,首先更新到内存中,然后每10次,才写到数据库中 add_filter('update_post_metadata', function($check, $post_id, $meta_key..., $meta_value){ if($meta_key == 'views'){ if($meta_value % 10 !...){ if($meta_key == 'views'){ $views = wp_cache_get($post_id, 'views'); if($views !
wordpress为网站系统提供了相同的数据表结构,为快速实现多个WordPress网站之间共享用户数据提供了可能。wordpress如何实现如网易通行证等大站一样的共享用户登录呢?...修改wordpress配置 为实现共用用户数据,我们必须让两个站使用的数据表都为a_user与a_usermeta。...`a_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '1', 'b_capabilities', '...a:1:{s:13:"administrator";s:1:"1";}'); 在这里解释下,在_usermeta数据表中meta_key的值为_capabilities的记录项就是记录的用户权限,其前缀代表了权限是哪个站点的...如果不会MySQL,你也可以使用phpmyadmin使用鼠标点击a_usermeta数据表中meta_key值为a_capabilities记录项前面的复制链接,phpmyadmin会自动跳转到插入功能并填入相应值
其实为了我们的WP网站更安全,在安装WordPress之前其实就应该将默认的数据库表前缀wp_更改掉,但往往最开始我们都没注意到这个细节问题,那么如果网站装好以后想更改WordPress数据库表前缀应该如何操作呢...编程笔记介绍两种方法更改WordPress数据库表前缀,手动的方法比较麻烦,推荐第二种方法用插件修改,修改WordPress数据库表前缀的话一共就干四件事,插件会自动完成。...方法一、手动修改WordPress表前缀 1、更改mysql数据库里面的数据库前缀; 直接进网站的数据库管理,全选所有表》修改表前缀,WordPress的初始程序只有11张表,后续我们安装各种插件会增加各种各样的表...option_name = replace(option_name,'wp_','wpkl_'); 4、更改wp_usermeta表 表wp_usermeta( 新表为wpkl_usermeta)里面的meta_key...字段值要改掉 update wpkl_usermeta set meta_key = replace(meta_key,'wp_',wpkl_'); 方法二、用插件修改WordPress表前缀(推荐)
怎么批量删除WordPress自定义栏目?ordPress自定义栏目功能强大,我们可能利用该功能使主题实现特殊功能和效果,如调用显示指定的图片和内容等。...1、将下面的代码添加到当前主题functions.php中: global $wpdb;$wpdb->query( "DELETE FROM $wpdb->postmetaWHERE `meta_key...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 发布文章时,会用到一个希望把指定某一篇或者几篇文章置顶首页的功能,而不是 wordpress 默认的按照发布时间降序排列,也就是说按照我的想法文章排序第一、第二、第三、第四等等...本着能不用插件就不用插件的原则,魏艾斯博客来说一下如何修改 wordpress 文章默认排序,摆脱按发布时间升降序排列的方法。 ? 首先要添加一处。...在 wordpress 后台的“写文章”里面,最上面点开“显示选项”,勾选最上面的“自定义栏目”。 ? 这时候在文章编辑区的下面就会看到自定义栏目了。...在 index.php 中替换如下代码,把默认发布时间排序改成了你的 meta_key,同时添加一项 meta_key。...get_query_var(‘paged’) : 1; $args=array( 从这里开始下面的代码 ‘caller_get_posts’ => 1, ‘paged’ => $paged 替换成 ‘meta_key
昨晚,MOREOPEN 博友重装 WordPress 后发现没有任何内容,帮忙解决时,发现他的数据库居然有 3 种前缀,看来是多次安装的时没填的前缀不一致造成的。...玛思阁稍作整理): ---- 默认的表前缀为 wp_,如果你修改了 wp_config.php 中的表前缀,也就是$table_prefix=后面的内容,则您需要同步修改数据库中的表前缀,修改完成后,如果登录 wordpress...的提示,那也就是说您还没有完成修改,Wordpress 的代码设计严密,没有那么简单让你完成。...看来手动是行不通了,只好使用 SQL 语句进行局部替换了,SQL 语句如下,在 phpMyAdmin 中选定数据库后,点击工具条中的 SQL 执行如下语句: update `new_usermeta` set `meta_key...`= replace(`meta_key`,'old_','new_') WHERE `meta_key` like "%old_%"; 以上仅为示例,实际得根据新旧表前缀进行修改: 其中,new_
2a43646ab9f3.png-w331s] 在这里代码拼接出了如下sql语句,meta_value为传入的media参数 SELECT meta_id FROM wp_postmeta WHERE meta_key...0x06 参考链接 https://medium.com/websec/wordpress-sqli-bbb2afcc8e94 https://medium.com/websec/wordpress-sqli-poc-f1827c20bf8e...= %s $value_clause", $meta_key ) ); } 如果输入 $meta_value = ' %s '; $meta_key = ['dump', '...%)%s|', "'%s'", $query ); 使得%s变为''%s'' 最后结果 SELECT type FROM table WHERE meta_key = 'dump'...AND meta_value = '' OR 1=1 /*'' WordPress也承认这是一个错误的修复。
$count : 0; } /* * WordPress获取指定作者文章总浏览量 * 暖岛整理 www.nuandao.cn */ if(!...0) FROM $wpdb->posts left join $wpdb->postmeta on ($wpdb->posts.ID = $wpdb->postmeta.post_id) WHERE meta_key...global $wpdb; $count=0; $views= $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key...0) FROM $wpdb->posts left join $wpdb->postmeta on ($wpdb->posts.ID = $wpdb->postmeta.post_id) WHERE meta_key...nd_get_all_view(){ global $wpdb; $count=0; $views= $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key
大部分 WordPress 都会安装 wp-postviews 插件来记录文章浏览量,这是一个很实用的插件。...global $wpdb; $count=0; $views= $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key...所以我重新写了一个性能更好的函数,尤其是用于大量文章的网站的时候,代码如下: /** * WordPress 获取文章浏览总数优化版 By 张戈博客 * 文章地址:https://zhangge.net...{ global $wpdb; $count = $wpdb->get_var("SELECT sum(meta_value) FROM $wpdb->postmeta WHERE meta_key...用法和上文代码一样: 1、将这个函数添加到 WordPress 主题函数模板文件 functions.php 当中即可(注意如果之前加过同名函数的话,请先删除,否则会出现冲突导致网站报错!)
领取专属 10元无门槛券
手把手带您无忧上云