WP常用SQL总结

运行SQL一定要备份,以防万一!先来看看每个表的功能吧 wp_commentmeta:存储评论的元数据 wp_comments:存储评论 wp_links:存储友情链接(Blogroll) wp_options:存储WordPress系统选项和插件、主题配置 wp_postmeta:存储文章(包括页面、上传文件、修订)的元数据 wp_posts:存储文章(包括页面、上传文件、修订) wp_terms:存储每个目录、标签 wp_term_relationships:存储每个文章、链接和对应分类的关系 wp_term_taxonomy:存储每个目录、标签所对应的分类 wp_usermeta:存储用户的元数据 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后台中编辑文章时,系统会自动保存许多修订的副本。过多的修订记录会加重数据库的负担并造成了资源的浪费。数据库越来越庞大,增加了数据检索影响页面的加载时间。 执行SQL语句 DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision' 注意:此方法将删除所有的文章的所有修订版,包括相关的meta数据。 处理未使用的标签 在WordPress数据库中,如果你使用一个查询语句手动来删除旧的文章,旧的标签却仍然会保留并在你的标签云/列表中出现。你可以使用下面的方法识别未使用的标签并将它删除。 执行SQL语句 SELECT * FROM wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt....

April 2, 2014 · 1 min · Me

dede栏目路径自动生成

抽空写了个这。。。虽然很头大,但是还是写完了。 下面由我来翻译下面这一大段话,首先,函数使用了PINYIN函数,将栏目名称转化成英文缩写,剩下的工作就是拼接和查询了,其实原理很简单。 ...

March 29, 2014 · 4 min · Me

彻底解决WP中文标签404错误

找到网站个目录下文件夹:wp-include文件夹下的class-wp.php,定位此代码段(V3.6在144行) 老高温馨提示:使用本教程前请备份数据库及相关文件if ( isset($_SERVER['PATH_INFO']) ) $pathinfo = $_SERVER['PATH_INFO']; else $pathinfo = ''; $pathinfo_array = explode('?', $pathinfo); $pathinfo = str_replace("%", "%25", $pathinfo_array[0]); $req_uri = $_SERVER['REQUEST_URI']; 修改为 if ( isset($_SERVER['PATH_INFO']) ) $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK"); else $pathinfo = ''; $pathinfo_array = explode('?', $pathinfo); $pathinfo = str_replace("%", "%25", $pathinfo_array[0]); $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK"); 至此,wordpress已经学会读中文了。 还有一种解决方式,即给每一个标签都设置一个英文别名,这样设置的标签还是不能使用中文,可以使用下面的代码将所有的标签格式化: <?php header("Content-type: text/html; charset=utf-8"); // 修改:LAOGAO https://blog.phpgao.com/ define('MYSQL_HOSTNAME', 'localhost'); define('MYSQL_USERNAME', 'yourusername'); define('MYSQL_PASSWORD', 'yourpassword'); define('MYSQL_DATABASE', 'yourdatabase'); define('MYSQL_TABLEPRE', 'wp_'); // 表前缀 error_reporting(E_ALL); ini_set('display_errors', 'On'); $link = mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD); if (!...

March 19, 2014 · 1 min · Me

程序员的几种状态

程序员在找Bug 中! 程序员找到Bug了!! 最后,程序员修好了这个Bug 以为可以下班去吃饭了的时候~~~ 终于,程序员收到了加班通知

March 18, 2014 · 1 min · Me

wordpress自动生成文章目录

看过百度百科的同学都知道,如果百科文章比较长,那么他会生成一个目录,不仅增强了用户体验,还为文章引入了锚点内链,对SEO优化起到了十分积极的作用。 请不要以为这个功能很复杂,其实目录功能只是牵扯到一个正则,一个JS和一个CSS而已,对于我们wordpress来说,很多插件已经实现了此功能。 老高@PHPer使用的是一款名叫Content Index for WordPress的国人自制插件,功能强大,使用方便。 Content Index for WordPress 安装 wordpress内置的插件管理器搜索"Content Index for WordPress",安装即可。 使用 安装后请至wordpress后台->设置->文章内索引: 老高@PHPer使用如下配置: 开启 插件默认对所有文章关闭,如果你想在某一篇文章中使用目录,请在编辑日志页面勾选  在此文章/页面中开启 Tips 也许你已经发现了,PHPer@老高使用了锚点之间的平滑滚动,如果你也希望实现此效果,请将下面的代码引入你的文章模板中 $(document).ready(function() { $('a[href*=#]').click(function() { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { var $target = $(this.hash); $target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']'); if ($target.length) { var targetOffset = $target.offset().top; $('html,body').animate({ scrollTop: targetOffset }, 1000); return false; } } }); }); 注意 可能你还没发现,上面的代码会出现一些小问题,比如你的网站留言也会出现某些锚点,点击它们将会出现很多意想不到的效果,所以我们需要将锚点控制在目录范围内 因此,我们需要在第二行的Jquery代码做一些修改 $('a[href*=#]')....

March 16, 2014 · 1 min · Me

HTTP状态码详解

什么是HTTP状态码 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一。 状态码的具体含义 1xx 消息 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。 100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。 只有在切换新的协议更有好处的时候才应该采取类似措施。例如,切换到新的HTTP 版本比旧版本更有优势,或者切换到一个实时且同步的协议以传送利用此类特性的资源。 102 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。 2xx 成功 这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。 200 请求已成功,请求所希望的响应头或数据体将随此响应返回。 201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 ‘202 Accepted’。 202 服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。 返回202状态码的响应的目的是允许服务器接受其他过程的请求(例如某个每天只执行一次的基于批处理的操作),而不必让客户端一直保持与服务器的连接直到批处理操作全部完成。在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便用户能够估计操作是否已经完成。 203 服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。当前的信息可能是原始版本的子集或者超集。例如,包含资源的元数据可能导致原始服务器知道元信息的超级。使用此状态码不是必须的,而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。 204 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。响应可能通过实体头部的形式,返回新的或更新后的元信息。如果存在这些头部信息,则应当与所请求的变量相呼应。 如果客户端是浏览器的话,那么用户浏览器应保留发送了该请求的页面,而不产生任何文档视图上的变化,即使按照规范新的或更新后的元信息应当被应用到用户浏览器活动视图中的文档。 由于204响应被禁止包含任何消息体,因此它始终以消息头后的第一个空行结尾。 205 服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。该响应主要是被用于接受用户输入后,立即重置表单,以便用户能够轻松地开始另一次输入。 与204响应一样,该响应也被禁止包含任何消息体,且以消息头后的第一个空行结束。 206 服务器已经成功处理了部分 GET 请求。类似于 FlashGet 或者迅雷这类的 HTTP 下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。 该请求必须包含 Range 头信息来指示客户端希望得到的内容范围,并且可能包含 If-Range 来作为请求条件。 响应必须包含如下的头部域: Content-Range 用以指示本次响应中返回的内容的范围;如果是 Content-Type 为 multipart/byteranges 的多段下载,则每一 multipart 段中都应包含 Content-Range 域用以指示本段的内容范围。假如响应中包含 Content-Length,那么它的数值必须匹配它返回的内容范围的真实字节数。 Date ETag 和/或 Content-Location,假如同样的请求本应该返回200响应。 Expires, Cache-Control,和/或 Vary,假如其值可能与之前相同变量的其他响应对应的值不同的话。 假如本响应请求使用了 If-Range 强缓存验证,那么本次响应不应该包含其他实体头;假如本响应的请求使用了 If-Range 弱缓存验证,那么本次响应禁止包含其他实体头;这避免了缓存的实体内容和更新了的实体头信息之间的不一致。否则,本响应就应当包含所有本应该返回200响应中应当返回的所有实体头部域。 假如 ETag 或 Last-Modified 头部不能精确匹配的话,则客户端缓存应禁止将206响应返回的内容与之前任何缓存过的内容组合在一起。 任何不支持 Range 以及 Content-Range 头的缓存都禁止缓存206响应返回的内容。...

March 15, 2014 · 2 min · Me

新思路解决网站301重定向

对于一个新手站长来说,当你选定了主域名后,首先要做的就是将另一个域名301重定向至主域名,这样有利于增加首页的权重。当然,301重定向技术还有很多用处,但本文主要阐述相同域名间的301跳转。 什么是301重定向? 其实很简单,当你的页面需要删除或者移动时,如果只是一个简单的跳转,虽然说在功能上实现了网页的重定向,但是这样做是对搜索引擎很不利的。也就是说,搜索引擎看不懂这样的跳转,他只会认为你的网页内容空了,所以必须要通过一个信号来告诉搜索引擎这个地址确实改变了,这个信号的实现就是3××,即以3开头的HTTP状态码(状态码参见 HTTP状态码详解)。 测试方法 了解了301重定向后,下面几个网站可以提供301跳转的检测 中文:http://tool.chinaz.com/pagestatus/?url=phpgao.com 英文:http://www.seoconsultants.com/tools/check-server-headers-tool/ 实现方法 废话不多说,下面我们探讨一下301重定向的具体实现方法: linux主机的301重定向 linux主机非常适合wordpress,因为他有一个强大的**.htaccess**文件,当浏览器或搜索引擎spider发送一个页面请求时,Web服务器就会检查**.htaccess**文件,这个文件指明了如何处理页面请求,通过修改他就可以告知搜索引擎某个页面是302转向(临时跳转)还是301重定向(永久性跳转)。 下面的例子的作用是将phpgao.com的请求301重定向至www.phpgao.com Options +FollowSymLinks RewriteEngine on rewritecond %{http_host} ^phpgao.com$ [nc] rewriterule ^(.*)$ https://blog.phpgao.com/$1 [r=301,nc] 或 RewriteEngine On RewriteCond %{HTTP_HOST} !^phpgao.com$ [NC] RewriteRule ^(.*)$ https://blog.phpgao.com/$1 [L,R=301] windows主机的301重定向 windows主机基本使用的都是IIS服务器,所以需要服务器支持ISAPI_Rewrite,他是类似Apache mod_rewrite功能的第三方Rewrite组件,使用httpd.ini为配置文件,一般空间都是支持的,如果是自己的服务器,那么可能需要你自己安装此组件,所需组件可以在http://www.isapirewrite.com/下载,该组件有免费Lite版本以及商业版,免费版只支持全局的httpd.conf 配置,商业版支持用户自定义httpd.ini文件,支持目录和站点级的类似.htaccess的配置,现在最新版本是3.0。例子如下: # ISAPI_Rewrite 1.3 版本 [ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 RewriteCond Host: ^phpgao\.com$ RewriteRule (.*) http\://www\.phpgao\.com$1 [I,R] # ISAPI_Rewrite 2.x 版本 [ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 RewriteCond Host: ^phpgao\....

March 14, 2014 · 1 min · Me

PHP教程

最近在线教程如雨后春笋,现在我把我看过的PHP教程分享给大家 韩顺平 PHP入门到精通 燕十八 PHP高手之路 参考文档 链接: http://pan.baidu.com/s/1kTgcxHP 密码: x00l

March 13, 2014 · 1 min · Me

使用debug_backtrace()做PHP调试

问题? 今天迁站的时候PHP突然报错: is_readable() [function.is-readable]: open_basedir restriction in effect. File(D:\phpnow\vhosts\wordpress.com/wp-content/plugins/D:\phpnow\vhosts\wordpress.com\wp-content\plugins\crayon-syntax-highlighter/trans/crayon-syntax-highlighter-zh_CN.mo) is not within the allowed path(s): (D:\phpnow\vhosts\wordpress.com;C:\Windows\Temp;) in D:\phpnow\vhosts\wordpress.com\wp-includes\l10n.php on line 339 好吧,看来是crayon-syntax-highlighter插件出错了,下面我们就一起找找出错的地方吧。 如何解决 确定出错地点 根据出错提示我们找到了 D:\phpnow\vhosts\wordpress.com\wp-includes\l10n.php的第339行,代码如下: if ( !is_readable( $mofile ) ) return false; 这个$mofile哪里来的呢?把整个函数贴出来找找看! function load_textdomain( $domain, $mofile ) { global $l10n; $plugin_override = apply_filters( 'override_load_textdomain', false, $domain, $mofile ); if ( true == $plugin_override ) { return true; } do_action( 'load_textdomain', $domain, $mofile ); $mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain ); if ( !...

March 11, 2014 · 2 min · Me

PHP经典函数收集

PHP经典函数 sys_getloadavg() 这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。 $load = sys_getloadavg(); if ($load[0] > 80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try again later.'); } //PS,如果“很不幸”你的 PHP 环境中没有这个函数,可以考虑使用下面这段代码 if (!function_exists('sys_getloadavg')) { function sys_getloadavg() { $loadavg_file = '/proc/loadavg'; if (file_exists($loadavg_file)) { return explode(chr(32),file_get_contents($loadavg_file)); } return array(0,0,0); } } debug_backtrace兄弟 使用请参考使用debug_backtrace()做PHP调试 get_browser() 该方法参考一个名叫browscap.ini的文件,该文件收录了各种浏览器信息,通过比对实现查找客户浏览器的功能。 两个使用方法: 1.下载最新的browscap.ini,放入PHP的安装目录或者C:\Windows文件夹下 下载地址 2.在PHP.INI文件中加入以下配置 [browscap] ;https://blog.phpgao.com/classic_code/ browscap = php_browscap.ini 3.使用代码如下 http://www.phpgao.com</a> print_r($browser); 返回结果如下...

March 10, 2014 · 2 min · Me