在互联网的海洋中,WordPress无疑是一座灯塔,照亮了无数网站的建设之路。而在这座灯塔的背后,隐藏着一个至关重要的技术——数据库。今天,我们就来揭开WordPress文章在数据库中的神秘面纱,看看那些被精心组织的数据是如何构建起一个又一个精彩绝伦的网站。
一、WordPress数据库的组成
WordPress数据库主要由以下几个部分组成:
序号 | 组成部分 | 说明 |
---|---|---|
1 | wp_posts | 存储文章、页面等内容的表 |
2 | wp_postmeta | 存储文章元数据的表,如分类、标签、作者等 |
3 | wp_comments | 存储评论的表 |
4 | wp_users | 存储用户信息的表 |
5 | wp_usermeta | 存储用户元数据的表,如头像、个人简介等 |
6 | wp_terms | 存储分类、标签等术语的表 |
7 | wp_term_relationships | 存储文章与分类、标签等术语之间的关系的表 |
8 | wp_term_taxonomy | 存储术语分类的表,如分类、标签等 |
9 | wp_options | 存储网站配置信息的表,如网站标题、副标题等 |
10 | wp_links | 存储友情链接的表(已弃用) |
二、WordPress文章在数据库中的存储结构
WordPress文章在数据库中的存储结构可以分为以下几个层次:
1. wp_posts表
wp_posts表是存储文章、页面等内容的表,其结构如下:
字段名 | 数据类型 | 说明 |
---|---|---|
ID | int | 主键,文章的唯一标识 |
post_author | int | 文章作者的ID |
post_date | datetime | 文章的发布时间 |
post_date_gmt | datetime | 文章的GMT时间 |
… | … | … |
2. wp_postmeta表
wp_postmeta表是存储文章元数据的表,其结构如下:
字段名 | 数据类型 | 说明 |
---|---|---|
meta_id | int | 主键,元数据的唯一标识 |
post_id | int | 所属文章的ID |
meta_key | varchar | 元数据的键名 |
meta_value | text | 元数据的键值 |
… | … | … |
3. wp_comments表
wp_comments表是存储评论的表,其结构如下:
字段名 | 数据类型 | 说明 |
---|---|---|
comment_id | int | 主键,评论的唯一标识 |
comment_post_ID | int | 所属文章的ID |
comment_author | varchar | 评论者的昵称 |
comment_author_email | varchar | 评论者的邮箱 |
comment_author_url | varchar | 评论者的网址 |
… | … | … |
三、WordPress文章在数据库中的关联关系
WordPress文章在数据库中的关联关系主要体现在以下几个层面:
1. wp_posts与wp_postmeta
wp_posts表和wp_postmeta表通过post_id字段进行关联,即wp_postmeta表的post_id字段与wp_posts表的ID字段相对应。
2. wp_posts与wp_comments
wp_posts表和wp_comments表通过comment_post_ID字段进行关联,即wp_comments表的comment_post_ID字段与wp_posts表的ID字段相对应。
3. wp_terms与wp_term_relationships
wp_terms表和wp_term_relationships表通过term_id字段进行关联,即wp_term_relationships表的term_id字段与wp_terms表的ID字段相对应。
4. wp_term_relationships与wp_posts
wp_term_relationships表和wp_posts表通过object_id字段进行关联,即wp_term_relationships表的object_id字段与wp_posts表的ID字段相对应。
四、总结
通过对WordPress文章在数据库中的存储结构、关联关系进行分析,我们可以更加深入地了解WordPress的内容管理系统。了解这些技术,有助于我们在日常使用WordPress时,更好地优化网站性能、提升用户体验。这只是WordPress数据库中的一部分内容,还有更多精彩等待我们去探索。让我们一起,走进WordPress数据库的奇妙世界吧!
wordpress如何删除主题wordpress删除主题在数据库中的残留
wordpress如何删除主题?
方法删除主题
1.删除主题前最好做个备份。一旦主题从后台操作中删除,主机上相应的文件夹也会被删除。更方便的方法是进入后台。点击外观-主题后,将鼠标移动到相关主题,点击-主题详情,右下角有一个红色的“删除”按钮,可以删除主题。
2.第二种删除主题的方法是ftp进入主机文件夹wp-content\themes找到相关主题,删除以主题名命名的文件夹,对应的主题消失在后台。
需要注意的事项
无法删除当前主题。删除主题之前,您必须替换另一个主题。
最好在删除主题之前对其进行备份。一旦删除,就无法恢复。只能重新安装。
有哪些适合程序员的Wordpress主题?
ordPress后台应用中心的主题很多,大多数都是国外个人制作的,并且大多数是免费的。
但是大多数都是英文的,中文主题也很多,大多数都分布在各个社区,一下是我收集的部分优秀的WordPress主题。
发出的图片超时咋么删除?
处理步骤:
到dashboard->upgrade,如果有升级,就升级wordpress
如果有主题升级,就升级主题
如果有插件需要升级,就升级插件
如果有插件要求其他升级,也根据提示一并升级
回到medialibrary界面,看问题是否已经解决
如果问题没有解决
是否在使用childtheme,如果是,暂时关闭childtheme,切换到父主题
回到medialibrary界面,看问题是否已经解决
如果问题没有解决
关闭所有插件,回到medialibrary,看问题是否解决
如果解决,说明某个插件造成这个问题,一个一个重新启用插件,知道找出问题插件
如果确定不是插件问题
查看浏览器是否开着某些插件(extension),进入浏览器incognito模式,打开medialibrary
如果问题没有解决
在浏览器里按F12,查看网络请求里有无超时请求,或错误请求,查看服务器日志,是否因为图片本身原因(大小等)造成服务器进程问题,如果是,登录服务器,在wp-content/uploads找到问题图片,删除,然后回到medialibrary重新上传(修改后的图片)
wordpress购买主题能用多久?
看你是在哪里买的一般有两种情况一种是按年付费,就是买一次管一年升级和技术支持,一年之后你不能更新也没有技术支持了,但是你的主题还是可以用一种是永久的,一次买断,永久更新和技术支持
WordPress不同分类、不同页面能使用不同主题么了,又该怎样操作?
1.如果你是想给分类加特色图像,可以这么做:
在wordpress后台:插件->安装插件菜单对应页面搜索”categorythumbnail”或”categorythumbnails”或”fpwcategorythumbnails”,下载安装启用,在你当前主题的分类页面模板中以你使用的插件的方式(通常是短代码或函数)调用即可,调用前可以加一个判断,判断下有图片没,有图片了输出html,没有了,就不输出即可。
2.如果你是想在特定页面显示特定分类下文章的特色图片以集中显示,可以这么做:使用featuredimagethumbnailgrid或者在主题中自定义。
祝愉快!
wordpress文章批量导入到草稿箱
WP All Import插件可以解决批量的文章导入
批量导入的功能,大量地用在后台产品的设计中,批量导入功能如果设计得好,可以大大提高使用者的使用效率。对于批量导入功能的使用者来说,并不简单的是把EXCEL表中的数据,导入到系统就可以了。产品经理在设计这个功能时,还要考虑:导入Excel的模板应该如何设计,才能让用户尽可能地减少批量导入时出错的几率。导入了格式不正确的数据,应该如何提示用户进行修改,用什么方式修改。导入的数据,与原有数据有冲突的时候,应该怎么处理。批量导入功能应该怎么做一.设计批量导入的模板由于用户在EXCEL中输入是很自由的,所以如果不把EXCEL定好模板,把填写的规则告诉用户,那么用户填写后的信息导入到系统,是很大几率不符合规范的,所以一定要定好EXCEL的模板。首先,要在EXCEL中指导用户,把输入的规则在EXCEL中写清楚。第二个,控制好用户的输入,对于那些需要跟系统数据库进行匹配的数据,让用户选,而不要让用户输。例如省市区,数据库中存的是叫河北省,如果让用户自有输入,他很有可能输入“河北”,少了个省字,这样在和数据库进行匹配的时候,就会匹配不到数据,所以对于需要进行匹配的数据,采用让用户选择而不是输入的方式。二.下载模板入口在易见的位置,放一个下载模板的入口,用户批量导入,尤其是首次导入的时候肯定需要一个模板,才能正确填写数据。可放在列表页。三.导入EXCEL,对错误数据进行提示、修改用户按照模板填写完EXCEL之后,就可以对数据进行批量导入了,点击批量导入按钮后,即可导入数据。对于产品经理来说,需要考虑以下两种情况:数据正确无误导入成功、某些数据有错。导入数据后,先校验数据是否有错误,如果正确无误的话,那么可以考虑直接在数据库中创建数据,也可以先把数据进行页面化显示,数据确认后再进行手动提交。建议用先进行页面化显示这种方式,一来用户可以知道自己哪些数据导入了系统二来当有错的时候,可以在页面中直观的让用户看到哪几行出了错。对于导入后某些数据有错的情况,根据具体的需求,又可以分为两种处理:允许数据导入,导入后提示用户有几条错误,可以在线进行编辑修改,修改正确后再保存。
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持 PHP和 MySQL数据库的服务器上使用自己的博客。WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。WordPress官方支持中文版,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。
wordpress 怎样减少数据库读取量
#1,若您的WordPress版本为2.3及以前,可采用如下方法令系统自动缓存内部调用函数,而完全不用担心缓存对系统交互性的影响(如延迟等)。
Step1:在WordPress安装目录下的wp-content文件夹下创建名为cache的目录,属性设置为755,如下图:
Step2:打开WordPress安装根目录下的wp-config.php文件,在其尾端加入define('ENABLE_CACHE', true);,如下图:
保存后上传更新文件,刷新页面后,可发现新创建的cache文件夹中生成了如下文件:
缓存的是一些不需要经常修改的文件,如分类名称、存档日期等。该缓存方法名为object缓存,并不缓存网页,而传统的wp-cache调用是缓存网页的,会影响网页的交互实时性,使用户体验些许变差。
#2,若您的WordPress版本为2.5及以上版本,由于新版WP取消了object缓存功能可以使用将所有待查数据都存入数据库options表(一般的默认名称为wp_options)的方法,大幅度减少数据库查询次数。ThinkAgain的解释如下:
默认WP有10个数据表,wp_posts和comments主要存储文章内容和评论,
其它的几个包括term等存储了目录和标签等等。这里不细谈。wp_options用来存储Wordpress以及插件运行时所涉及的配置等。且WP会在
运行时自动读取该表的内容。换句话说,因为WP已经预读这部分内容,所以直接调用wp_options内的数据是不会产生数据库查询的。()
方法:假如要缓存的是分类名称调用表单,则写functions.php如下代码:
function cache_category(){
$cached= get_option('multicolor_cache_category');
if($cached){
echo$cached;
}else{
$cached= cache_collapsible_list_cats();
echo”Update cache”;
echo$cached;
}
}
add_action('publish_post','cache_collapsible_list_cats');
当然,这显得很复杂,不过ThinkAgain说,WP2.6也是可以使用object自动缓存功能的,请等待他更新的方法。
#3,由于WordPress的内部永久链接调用函数为了追求老版插件的最大兼容性所以较啰嗦,比较耗费查询次数,可在functions.php写入如下代码,大幅度减少查询次数(均适用)
function revised_permalink($post,$leavename=false){
$rewritecode= array(
'%year%',
'%monthnum%',
'%day%',
'%hour%',
'%minute%',
'%second%',
$leavename?'':'%postname%',
'%post_id%',
'%category%',
'%author%',
$leavename?'':'%pagename%',
);
if( empty($post->ID)) return FALSE;
if($post->post_type=='page')
return get_page_link($post->ID,$leavename);
elseif($post->post_type=='attachment')
return get_attachment_link($post->ID);
$permalink= get_option('permalink_structure');
if(''!=$permalink&&!in_array($post->post_status, array('draft','pending'))){
$unixtime= strtotime($post->post_date);
$category='';
if( strpos($permalink,'%category%')!== false){
$cats= get_the_category($post->ID);
if($cats)
usort($cats,'_usort_terms_by_ID');// order by ID
$category=$cats[0]->slug;
if($parent=$cats[0]->parent)
$category= get_category_parents($parent, FALSE,'/', TRUE).$category;
// show default category in permalinks, without
// having to assign it explicitly
if( empty($category)){
$default_category= get_category( get_option('default_category'));
$category= is_wp_error($default_category)?'':$default_category->slug;
}
}
$author='';
if( strpos($permalink,'%author%')!== false){
$authordata= get_userdata($post->post_author);
$author=$authordata->user_nicename;
}
$date= explode(“”,date('Y m d H i s',$unixtime));
$rewritereplace=
array(
$date[0],
$date[1],
$date[2],
$date[3],
$date[4],
$date[5],
$post->post_name,
$post->ID,
$category,
$author,
$post->post_name,
);
$permalink= get_option('home'). str_replace($rewritecode,$rewritereplace,$permalink);
$permalink= user_trailingslashit($permalink,'single');
return apply_filters('post_link',$permalink,$post);
} else{// if they're not using the fancy permalink option
$permalink= get_option('home').'/?p='.$post->ID;
return apply_filters('post_link',$permalink,$post);
}
}
点击下面的链接下载修改好的文件,请解压后上传或粘贴到您原来的文件中。此方法文章页查询次数至少可降低10。
注意:如果您原来的插件有诸如下面的代码,并且您的永久链接方式为postname而不是postid,请修改
$sql=”SELECT ID, post_title, comment_count,post_date, post_content FROM$tableposts WHERE post_status='publish'”;
为
$sql=”SELECT ID, post_name, post_title,
comment_count,post_date, post_content FROM$tableposts WHERE
post_status='publish'”;
至此您的数据库查询次数将减小为个位数,繁忙时访问速度提高较显著,速度应当与直接生成静态文件时的情况差距不大,但互动性丝毫不减。