必应被墙

刚刚发现www.bing.com的一系列网址(http://www.bing.com/translator/ 等等)不翻墙均打不开,只有cn.bing.com可以正常访问

解决 WordPress“正在执行例行维护,请一分钟后回来”

WordPress在升级程序、主题、插件时,都会先切换到维护模式,也就是显示 “正在执行例行维护,请一分钟后回来(Briefly unavailable for scheduled maintenance. Check back in a minute)”,如果升级顺利,也就几秒左右就恢复正常;但是如果由于网速不佳等原因导致升级中断,WordPress就会一直停留在维护模式,不论前台还是后台,都一直显示“正在执行例行维护,请一分钟后回来“。

如何解决这个问题呢?

1.马上通过FTP登录你的网站,删除WordPress根目录下的 .maintenance ,刷新网页即可。

2.但是有时候你会发现,根目录根本就没有 .maintenance!倡萌最近就遇到这个问题,最初以为是隐藏了,所以使用SSH登录服务器,但是依旧没有看到,怎么办?其实有一个比较简单的办法,直接新建一个空的txt文本,上传到主机空间中,然后重命名为 .maintenance,然后你会发现 .maintenance 居然不见了!不用担心,重新刷新你的网站,是不是正常了?!

3.如果还是不行,或者你想让它以后可以显示 .maintenance ,那就打开 /wp-admin/includes/class-wp-filesystem-direct.php

找到下面的代码:

	function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
		// safe mode fails with a trailing slash under certain PHP versions.
		$path = untrailingslashit($path);
		if ( empty($path) )
			return false;

		if ( ! $chmod )
			$chmod = FS_CHMOD_DIR;

		if ( ! @mkdir($path) )
			return false;
		$this->chmod($path, $chmod);
		if ( $chown )
			$this->chown($path, $chown);
		if ( $chgrp )
			$this->chgrp($path, $chgrp);
		return true;
	}

 

将其改为:

function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
 // safe mode fails with a trailing slash under certain PHP versions.
 if ( ! $chmod )
 $chmod = $this->permission;

if(ini_get('safe_mode') && substr($path, -1) == '/')
 {
 $path = substr($path, 0, -1);
 }

if ( ! @mkdir($path) )
 return false;
 $this->chmod($path, $chmod);
 if ( $chown )
 $this->chown($path, $chown);
 if ( $chgrp )
 $this->chgrp($path, $chgrp);
 return true;
}

 

然后刷新FTP目录,是不是看到.maintenance了,删除它吧!

WordPress文章同步到新浪微博的三种方法

同步到微博大概有三种方法,插件、关联博客、非插件微博接口

第一种,直接百度搜索就可以;
第二种,由于新浪现在已经取消了关联博客的选项,但该功能却没有被取消你可以放问下面这个地址,然后配置一下就可以了

http://weibo.com/tool/bloglink

第三种方法需要使用新浪的接口,如下操作:
1)到新浪微博开放平台创建一个站内应用http://open.weibo.com/apps/new?sort=app,通过不通过审核都可以,只不过通过的话可以在微博下方显示来自某某应用,如来自 Dammit! ,具体怎么创建你可以在百度谷歌上搜索一下,很简单(但如果你一直没有通过审核,还想通过审核的话,我可以提供有偿帮助嘎嘎~),创建好应用后,下面需要使用到申请应用的 App Key;
2)编辑你主题的functions.php文件,在其最后加入如下代码

// 微博同步
function post_to_sina_weibo($post_ID) {
  if( wp_is_post_revision($post_ID) ) return;
    $get_post_info = get_post($post_ID);
    $get_post_centent = get_post($post_ID)->post_content;
    //去掉文章内的html编码的空格、换行、tab等符号(如果你文章的编码格式是这样子,可以将下面的"//"去掉即开启此功能)
    //$get_post_centent = str_replace("t", " ", str_replace("n", " ", str_replace(" ", " ", $get_post_centent)));
    $get_post_title = get_post($post_ID)->post_title;
  if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {
    $request = new WP_Http;
    $status = '【' . strip_tags( $get_post_title ) . '】 ' . mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, 132,'...') . ' 全文地址:' . get_permalink($post_ID) ;
    $api_url = 'https://api.weibo.com/2/statuses/update.json';
    $body = array( 'status' => $status, 'source'=>'4135063399');
    $headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' );
	/*
	如果你使用改方法,请注释掉上面$headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' );
	换成如下代码
	//你的新浪微博登陆名
	$username = '' ;
	//你的新浪微博登陆密码
	$password = '' ;
	$headers = array( 'Authorization' => 'Basic ' .  base64_encode('$username:$password'));
	*/
    $result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) );
    }
}
add_action('publish_post', 'post_to_sina_weibo', 0);

 

大概一般都应该知道是什么意思吧
if( wp_is_post_revision($post_ID) ) return;
//如果是修订版本

$get_post_info = get_post($post_ID);
//获取该文章信息
$get_post_centent = get_post($post_ID)->post_content;
//文章内容(不知道为什么在使用获取全部post_ID数据后没办法得到content,所以单独在请求下)
$get_post_title = get_post($post_ID)->post_title;
//文章标题
if ( $get_post_info->post_status == ‘publish’ && $_POST['original_post_status'] != ‘publish’ ) {
//判断是不是已经发表的文章或页面
$status = ‘【’ . strip_tags( $get_post_title ) . ‘】 ‘ . mb_strimwidth(strip_tags( apply_filters(‘the_content’, $get_post_centent)),0, 132,’…’) . ‘ 全文地址:’ . get_permalink($post_ID) ;
// strip_tags( $get_post_title ) 是获取文章标题

// mb_strimwidth(strip_tags( apply_filters(‘the_content’, $get_post_centent)),0, 132,’…’) 是截取文章的长度
// get_permalink($post_ID) 该文章链接地址
$api_url = ‘https://api.weibo.com/2/statuses/update.json’;
//老接口用不了了,必须用v2.0
$body = array( ‘status’ => $status, ‘source’=>’4135063399′);
// $status 要发布的微博文本内容,内容不超过140个汉字

// $source 数值为应用的AppKey
$headers = array( ‘Authorization’ => ‘Basic ‘ . ‘bate64编码加密’ );
//这里的’bate64编码加密’位置,你自己到http://www.mxcz.net/tools/base64.aspx自己把你的帐号密码进行一下加密,格式是你新浪微博的登陆帐号:登陆密码(如,username@gmail.com:password)
//如果不喜欢这么使用$headers = array( ‘Authorization’ => ‘Basic ‘ . ‘bate64编码加密’ ),就替换使用下面这个方法也可以,一样
//你的新浪微博登陆名

$username = ” ;
//你的新浪微博登陆密码
$password = ” ;
$headers = array( ‘Authorization’ => ‘Basic ‘ . base64_encode(‘$username:$password’));

 

 

最后会在你发送博文后,马上同步一条信息到微博上.

该微博接口请求参数:

 

必选

类型及范围

说明

source

false

string

采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey

status

true

string

要发布的微博文本内容,必须做URLencode,内容不超过140个汉字。

visible

false

int

微博的可见性,0:所有人能看,1:仅自己可见,2:密友可见,3:指定分组可见,默认为0。

access_token

false

string

采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。

list_id

false

string

微博的保护投递指定分组ID,只有当visible参数为3时生效且必选。

lat

false

float

纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0。

long

false

float

经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0。

annotations

false

string

元数据,主要是为了方便第三方应用记录一些适合于自己使用的信息,每条微博可以包含一个或者多个元数据,必须以json字串的形式提交,字串长度不超过512个字符,具体内容可以自定。

WordPress显示数据库查询次数和查询花费时间

WordPress提供了一些功能函数可以轻松地显示数据库查询的统计信息,这些信息可以公开地显示在网页中,或者隐藏在源代码中,更或者只有你自己可以看到。

WordPress主要提供了两个统计函数:

1.网页加载时查询数据库的次数:

<?php echo get_num_queries(); ?>

 

2.服务器端完成这些查询所花费的时间:

<?php timer_stop(7); ?>

 

可以使用3种方式在网页中显示:

1. 公开地显示查询的统计信息:

如果你觉的你的服务器或空间的处理速度好,或者想让你的访问者看到这些查询统计信息的话,你可以将这些统计信息公开显示在页面中:(效果查看博客的页面底部)

<p>< ?php echo get_num_queries(); ?> queries in < ?php timer_stop(3); ?> seconds</p>

 

2. 将统计信息显示在源代码中,而不出现页面的内容中:

如果你不想将统计信息显示在页面上供访问者查看,但又想自己可以知道这些统计信息,那么你可以通过html的注释将结果只显示在源代码中(PS:大家也可以从源代码中查看的哦!):

<!-- <?php echo get_num_queries(); ?> queries in < ?php timer_stop(3); ?> seconds -->

 

3. 统计信息只有你自己登录了后可以看到:

该方法是第二种显示的优化方法,只需博客管理员登录后就可以查看查询统计信息,访问者是无法查看的:

< ?php if (current_user_can('level_10')) {
echo '<!-- ' . get_num_queries() . ' queries in ' . timer_stop(3) . ' seconds -->';
} ?>

 

如果想查看具体查询了数据库哪些内容,可以用如下解决方法:

1、首先在 wp-config.php 里添加如下代码:

define('SAVEQUERIES',true);

 

然后在 footer.php 里添加如下代码:

<?php if(is_user_logged_in()){
global $wpdb;
echo "<pre>";
print_r($wpdb->queries);
echo "</pre>";
}?>

 

分析:

1、if (is_user_logged_in()) 用于判断当前访客是否已登录,也可以用 if (current_user_can('level_10')) 来判断是否为管理员登录,目的是为了不让游客查看到这些数据,此代码可省;

2、global $wpdb; 定义全局变量$wpdb,这是Wordpress默认的数据库类;

3、<pre></pre>将结果嵌套在HTML标签<pre>内;

4、print_r($wpdb->queries); 输出各次数据库查询的信息。

刷新首页或日志页,可看到类似如下的输出结果:

Array
(
[0]=>Array
(
[0]=> SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type ='post' AND (wp_posts.post_status ='publish' OR wp_posts.post_status ='private') ORDER BY wp_posts.post_date DESC LIMIT 0,10
[1]=>0.0003960132598877
[2]=>require, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts
)
 
[1]=>Array
(
[0]=> SELECT option_value FROM wp_options WHERE option_name ='nuodou_header_code' LIMIT 1
[1]=>0.0013589859008789
[2]=>require, require_once, include, get_header, locate_template, load_template, require_once, get_option
)

 

下面的活儿就得自己分析了,看看哪些是可以删除,哪些是可以改进的,以减少数据库查询次数。

 

非常实用的12个WordPress数据库维护SQL语句

下面假设 WordPress 数据库的表的前缀都是默认的“wp_”。具体用时可根据自己的数据库后缀名进行相应的字段修改。

1. 直接在数据库中修改密码

密码忘记了是经常的事情,博客密码忘记了进不去,可以直接在数据库里面修改:

UPDATE wp_users SET user_pass = MD5('PASSWORD') WHERE user_login ='admin'

 

上面采用了 MySQL 的 MD5() 函数讲密码转成 MD5 Hash。

2. 将日志从一个作者转移到另外一个

假如你的博客的某个作者离开了,或者你不想让“admin”作为作者名,想把日志的作者从一个改到另外一个:

UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

 

*注:你需要知道两个作者的 user id。

3. 删除数据库中日志修订记录和其相关的 post_meta 数据

特别是针对多人博客的时候,日志修订功能很重要,但是日志修订功能也在数据库里面添加了很多的数据,假设你的博客只有 100 篇日志,每篇日志有 10 个日志修订,你的 posts 表中就会有超过 1000 条记录,严重的数据冗余:

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'

 

*注:上面的 SQL 将删除数据库中所有的日志修订记录和其相关的 meta 信息(自定义字段)。

4. 批量删除垃圾留言

如果你一段时间没有管理你的博客,刚好出去休假,没有办法上网,并且博客也没有装类似 Akismet 这类防垃圾留言插件,那么你回来的时候,你会发现博客后台有成千上万条垃圾留言需要你去审核。

这个时候,其实你只需要审核通过正常的留言,然后执行下面这条 SQL:

DELETE FROM wp_comments WHERE comment_approved ='0';

 

5. 查找没用的标签

你可能创建一些 WordPress 标签之后,就没有再使用,你可以通过下面这条 SQL 找到它们,然后安全的删除他们。

SELECT *From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

 

6. 查找和替换数据

对于熟悉 MySQL 数据库的开发者来说,replace() 这个 MySQL 函数都应该很熟悉,它可以让你指定一个字段,然后替换它里面的字符串,一旦执行,所有这个字段里面的字符串都会被替换。对于 WordPress 博客来说,这个 SQL 则非常实用,它可以让你批量修改某些输入错误,或者某个邮件地址等等。

UPDATE table_name SET field_name = replace( field_name,'string_to_find','string_to_replace');

 

替换日志内容中字符串:

UPDATE wp_posts SET post_content = replace( post_content,'string_to_find','string_to_replace');

 

将某个留言者地址替换下:

UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url,'http://oldurl.com','http://newurl.com');

 

留言者邮箱:

UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email,'old-email@address.com','new-email@address.com');

 

还有一个 WordPress 插件 Search & Replace 还提供一个后台让你更加容易进行批量替换。

7. 获取所有留言者的邮件地址

有时候你想做点不是那么好的事情,比如给所有留言者发下邮件,告诉他们你博客做了一些新的功能,或者写了一个很不错的文章,那么你干坏事情之前,首先要获取所有留言者的邮件地址:

SELECT DISTINCT comment_author_email FROM wp_comments;

 

*注:上面的 DISTINCT 让你获取的邮件地址是唯一的,即使这个用户发过好几次留言,也不怕。

不过群发邮件这件事情个人建议还是不要这样做好。 

8. 一次把所有插件都停了

网站出现问题了,需要一次把插件全部都先停了之后检测下:

UPDATE wp_options SET option_value ='' WHERE option_name ='active_plugins';

 

9. 删除没用的标签

没用的标签当然要删除了:

DELETE a,b,c
FROM
wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
c.taxonomy ='post_tag' AND
c.count =0
);

 

*注:上面 SQL 除了删除所有没用的标签,还删除了所有标签分类模式信息以及和日志关联的关系。

10. 列出没用的 post meta

wp_postmeta 中的数据是由一些插件或者自定义字段生成的,他是对 wp_posts 表的一种无限的扩展,但是可能由于某种原因,日志被删除了,但是它的 meta 信息还存在 wp_postmeta 表中,下面这条 SQL 将这些没有关联日志的 meta 数据列出:

SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;

 

11. 关闭旧日志留言功能

厄,对于一些技术博客或者其他博客来说,一些旧日志的内容可能已经过时了,但是一些读者,还是对一些问题“纠缠不清”或者“喋喋不休”,怎么办,把留言关了就好了:

关闭留言:

UPDATE wp_posts SET comment_status ='closed' WHERE post_date <'2009-01-01' AND post_status ='publish';

 

关闭Trackback:

UPDATE wp_posts SET ping_status="closed" WHERE post_date <'2009-01-01' AND post_status ='publish';

 

12. 删除所有 url 含有特定字符串的留言

一些留言者很烦,一次留几十个,其链接都指定到一些卖伟哥,起重机,SEO 的站点,烦人的很,一个一个删,又累,下面这条 SQL 可以来帮忙:

DELETE from wp_comments WHERE comment_author_url LIKE "%viagra%";

 

简单总结

这些 SQL 语句是直接对数据库进行操作的,如果你不是那么懂数据库或者 SQL 语言,建议你不要这么做,如果你还是比较自信 SQL 操作,建议操作之前备份下数据库。

 

2025 年 5 月
 1234
567891011
12131415161718
19202122232425
262728293031  

广告

分类

近期评论

标签

历史上的今天

归档