标签: wordpress

WordPress文章远程图片自动本地化下载代码

其实有很多插件是可以实现 wordpress 远程图片本地化的,但是有可能插件太多了,会影响网站的性能或者拖累服务器,降低网站的运行速度。不过如果你是代码控,不喜欢用插件,那么下面这段“wordpress 远程图片自动本地化“的代码也许适合你,复制下面的代码,然后粘贴到你当前 WordPress 主题的模版函数(functions.php)文件中保存即可

//自动本地化外链图片
add_filter('content_save_pre', 'auto_save_image');
function auto_save_image($content) {
$upload_path = '';
$upload_url_path = get_bloginfo('url');
//上传目录
if (($var = get_option('upload_path')) !=''){
$upload_path = $var;
} else {
$upload_path = 'wp-content/uploads';
}
if(get_option('uploads_use_yearmonth_folders')) {
$upload_path .= '/'.date("Y",time()).'/'.date("m",time());
}
//文件地址
if(($var = get_option('upload_url_path')) != '') {
$upload_url_path = $var;
} else {
$upload_url_path = bloginfo('url');
}
if(get_option('uploads_use_yearmonth_folders')) {
$upload_url_path .= '/'.date("Y",time()).'/'.date("m",time());
}
require_once ("../wp-includes/class-snoopy.php");
$snoopy_Auto_Save_Image = new Snoopy;
$img = array();
//以文章的标题作为图片的标题
if ( !empty( $_REQUEST['post_title'] ) )
$post_title = wp_specialchars( stripslashes( $_REQUEST['post_title'] ));
$text = stripslashes($content);
if (get_magic_quotes_gpc()) $text = stripslashes($text);
preg_match_all("/ src=(\"|\'){0,}(http:\/\/(.+?))(\"|\'|\s)/is",$text,$img);
$img = array_unique(dhtmlspecialchars($img[2]));
foreach ($img as $key => $value){
set_time_limit(180); //每个图片最长允许下载时间,秒
if(str_replace(get_bloginfo('url'),"",$value)==$value&&str_replace(get_bloginfo('home'),"",$value)==$value){
//判断是否是本地图片,如果不是,则保存到服务器
$fileext = substr(strrchr($value,'.'),1);
$fileext = strtolower($fileext);
if($fileext==""||strlen($fileext)>4)
$fileext = "jpg";
$savefiletype = array('jpg','gif','png','bmp');
if (in_array($fileext, $savefiletype)){
if($snoopy_Auto_Save_Image->fetch($value)){
$get_file = $snoopy_Auto_Save_Image->results;
}else{
echo "error fetching file: ".$snoopy_Auto_Save_Image->error."<br>";
echo "error url: ".$value;
die();
}
$filetime = time();
$filepath = "/".$upload_path;//图片保存的路径目录
!is_dir("..".$filepath) ? mkdirs("..".$filepath) : null;
//$filename = date("His",$filetime).random(3);
$filename = substr($value,strrpos($value,'/'),strrpos($value,'.')-strrpos($value,'/'));
//$e = '../'.$filepath.$filename.'.'.$fileext;
//if(!is_file($e)) {
// copy(htmlspecialchars_decode($value),$e);
//}
$fp = @fopen("..".$filepath.$filename.".".$fileext,"w");
@fwrite($fp,$get_file);
fclose($fp);
$wp_filetype = wp_check_filetype( $filename.".".$fileext, false );
$type = $wp_filetype['type'];
$post_id = (int)$_POST['temp_ID2'];
$title = $post_title;
$url = $upload_url_path.$filename.".".$fileext;
$file = $_SERVER['DOCUMENT_ROOT'].$filepath.$filename.".".$fileext;
//添加数据库记录
$attachment = array(
'post_type' => 'attachment',
'post_mime_type' => $type,
'guid' => $url,
'post_parent' => $post_id,
'post_title' => $title,
'post_content' => '',
);
$id = wp_insert_attachment($attachment, $file, $post_parent);
$text = str_replace($value,$url,$text); //替换文章里面的图片地址
}
}
}
$content = AddSlashes($text);
remove_filter('content_save_pre', 'auto_save_image');
return $content;
}
function mkdirs($dir){
if(!is_dir($dir)){
mkdirs(dirname($dir));
mkdir($dir);
}
return ;
}
function dhtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = dhtmlspecialchars($val);
}
}else{
$string = str_replace('&', '&', $string);
$string = str_replace('"', '"', $string);
$string = str_replace('<', '<', $string);
$string = str_replace('>', '>', $string);
$string = preg_replace('/&(#\d;)/', '&\1', $string);
}
return $string;
}

无插件美实现wordpress蜘蛛爬行记录生成

wordpress蜘蛛爬行记录生成这个功能,出于对网站优化的研究,清楚的了解蜘蛛爬行规律也是很重要的,我们就可以知道蜘蛛的爬行规律,根据这个规律我们再来写文章,这样符合了蜘蛛的胃口是很利于优化的。。。但是小编一直提倡着远离插件,热爱速度的口号,所以今天就教大家用代码完美实现wordpress蜘蛛爬行记录生成功能!

wordpress主题文件目录下找到function文件,用代码编辑软件打开,在<?php ?>内的任意位置增加下面一段代码即可完成wordpress蜘蛛爬行记录生成的功能!

  1. function get_naps_bot(){
  2. $useragent = strtolower($_SERVER[‘HTTP_USER_AGENT’]);
  3. if (strpos($useragent, ‘googlebot’) !== false){
  4. return ‘Googlebot’;
  5. }
  6. if (strpos($useragent, ‘msnbot’) !== false){
  7. return ‘MSNbot’;
  8. }
  9. if (strpos($useragent, ‘slurp’) !== false){
  10. return ‘Yahoobot’;
  11. }
  12. if (strpos($useragent, ‘baiduspider’) !== false){
  13. return ‘Baiduspider’;
  14. }
  15. if (strpos($useragent, ‘sohu-search’) !== false){
  16. return ‘Sohubot’;
  17. }
  18. if (strpos($useragent, ‘lycos’) !== false){
  19. return ‘Lycos’;
  20. }
  21. if (strpos($useragent, ‘robozilla’) !== false){
  22. return ‘Robozilla’;
  23. }
  24. return false;
  25. }
  26. function nowtime(){
  27. date_default_timezone_set(‘Asia/Shanghai’);
  28. $date=date(“Y-m-d.G:i:s”);
  29. return$date;
  30. }
  31. $searchbot = get_naps_bot();
  32. if ($searchbot) {
  33. $tlc_thispage = addslashes($_SERVER[‘HTTP_USER_AGENT’]);
  34. $url=$_SERVER[‘HTTP_REFERER’];
  35. $file=“robotslogs.txt”;
  36. $time=nowtime();
  37. $data=fopen($file,“a”);
  38. $PR=“$_SERVER[REQUEST_URI]”;
  39. fwrite($data,“Time:$time robot:$searchbot URL:$tlc_thispage\n page:$PR\r\n”);
  40. fclose($data);
  41. }

使用上面这段代码后,最好在网站的根目录创建个robotslogs.txt的文件,并且linux主机设置权限为777,然后过段时间,访问http://网址/robotslogs.txt 即可看到蜘蛛爬行记录了!

一些说使用后出错的朋友,请研究下function文件内,插入的位置!

解决利用Virtualmin进行定时备份无法删除旧备份

标题有点怪,我的问题就是利用Virtualmin进行定时备份进行配置的时候出现“Deletion of old backups is only supported when a date-based destination is used, and strftime substitutions are enabled.”错误。然后我google了一下。有解决办法了。

解决方法很简单:即在备份的文件夹那后面还需要加上 %d-%M-%Y 这几个参数。这样才能定时删除旧的备份。

virtualmin-buck-up

利用WordPress短代码插入无广告的优酷视频

之前写过一篇《引用优酷视频屏蔽广告代码》,其中的代码可以在Wordpress博客转载和引用优酷视频时屏蔽掉广告,但每次都复制长长的代码,不仅麻烦而且会影响到文章的编辑。下面我们利用WordPress短代码(Shortcode API),采用方便简洁的形式插入无广告的视频。

一、将下面代码加到Wordpress主题functions.php模板文件中:

  1. function youku_video($atts, $content=null){
  2. return ‘<p style=“text-align: center;”><embed src=http://static.youku.com/v1.0.0149/v/swf/qplayer_rtmp.swf?VideoIDS=’.$content.’ID&winType=adshow&isAutoPlay=true” quality=”high” width=”610″ height=”460″ align=”middle” wmode=”transparent” allowScriptAccess=”never” allowNetworking=”internal” autostart=”0″ type=”application/x-shockwave-flash”></embed></p>’;
  3. }
  4. add_shortcode(‘youku’,’youku_video’);

其中: width=”610″ height=”460″ 是视频的大小,可根据需要修改。

二、编辑文章时在准备插入优酷视频的位置输入:

  1. {youku]XMjM2OTE3ODg4[/youku}

注:前后的 { } 用 [ ] 替换。

中间的“XMjM2OTE3ODg4”是这首 Need You Now 音乐视频地址的ID:

http://v.youku.com/v_show/id_XMjM2OTE3ODg4.html

获得视频地址后,只需要复制最后的红色部即可。

点击播放下面的视频,看看烦人广告是不是真的没了,再也不会因看一分钟的视频,却因为前面30秒的广告而抓狂!

本文的目的只是为了实践应用一下WP短代码而已,如果你是Firefox或者chrome浏览器用户,可以安装Adblock扩展屏蔽视频广告,更为方便实用。
另外,OpenGG.Clean.Player 去视频广告脚本也不错
补充:另有童鞋在此代码基础上添加了可以自定义视频大小的短代码供大家参考:

  1. /优酷开始
  2. function youku_video($atts, $content=null){
  3. extract(shortcode_atts(array(“w”=>’0′,“h”=>’0′,),$atts));
  4. return ‘<p style=“text-align: center;”><embed src=http://static.youku.com/v1.0.0149/v/swf/qplayer_rtmp.swf?VideoIDS=’.$content.’ID&winType=adshow&isAutoPlay=true” quality=”high” width=”‘.$w.'” height=”‘.$h.'” align=”middle” wmode=”transparent” allowScriptAccess=”never” allowNetworking=”internal” autostart=”0″ type=”application/x-shockwave-flash”></embed></p>’;
  5. }
  6. add_shortcode(‘youku’,’youku_video’);
  7. //优酷结束

编辑文章时在准备插入优酷视频的位置输入:

  1. {youku w=630 h=370]XMzMyMzgzNjI4[/youku}

注:前后的 { } 用 [ ] 替换。

其中 w=630 h=370是视频尺寸大小

原文:http://yutao.me/61.htm

http://zmingcx.com/youku-wordpress-code-ad.html

引用优酷视频屏蔽广告代码

经常引用一些视频网站的视频,但前面的广告很让人心烦,一分钟的视频,却看了30秒的广告,有木有?

通过下面的代码引用优酷的视频可以屏蔽掉广告.

  1. <p style=“text-align: center;”><embed src=http://static.youku.com/v1.0.0149/v/swf/qplayer_rtmp.swf?VideoIDS=XMjM2OTE3ODg4ID&winType=adshow&isAutoPlay=true” quality=”high” width=”x” height=”y” align=”middle” allowScriptAccess=”never” allowNetworking=”internal” autostart=”0″ type=”application/x-shockwave-flash”></embed></p>

调整是否自动播放:

isAutoPlay=false(不自动)

isAutoPlay=true(自动播放)

注:貌似不灵光

调整大小:

width=”x”height=”Y”

常见几种比例:

384×256、580×435、610×460

替换视频地址:

红色部分是URL链接中视频的ID,比如:

  1. http://v.youku.com/v_show/id_XMjM2OTE3ODg4.html

用链接中的XNDI1ODA3ODgw,替换红色部分即可。

采用以上的方法,就能够将优酷视频前面的广告屏蔽掉,比如下面的视频:

上面的视频插入代码:

  1. <p style=“text-align: center;”><embed src=http://static.youku.com/v1.0.0149/v/swf/qplayer_rtmp.swf?VideoIDS=XMjM2OTE3ODg4ID&winType=adshow&isAutoPlay=true” quality=”high” width=”610″ height=”460″ align=”middle” allowScriptAccess=”never” allowNetworking=”internal” autostart=”0″ type=”application/x-shockwave-flash”></embed></p>

大家试试吧!

原文链接:http://zmingcx.com/youku-shielded-ad-code.html

使用 fartscroll.js 让你的网页在滚动时放屁

放屁绝对不是一个很高雅的行为,但是如果你比较喜欢恶搞,或者在愚人节,或者是一些比较特殊的网页设计中,可以通过 fartscroll.js 这个插件让你的网页在滚动的过程中 放屁。

直接打开 fatscroll.js 的官方页面(http://theonion.github.io/fartscroll.js/),滚动一下,你就可以听到了放屁声音了,你滚动的距离和速度不同,放屁的声音也不同。

使用方法也很简单,先下载插件包,解压出来之后,在网页中引入 fartscroll.min.js 这个文件,然后配置下面的参数等,启用这个插件:


// 在文档中滚动 400 像素就放屁
$(document).fartscroll();

// 文档中每滚动 800 像素就放屁
$(document).fartscroll(800);

// 网页中没滚动 100 像素就放屁
$("body").fartscroll(100);

// 很多很多的屁
$("body").fartscroll(5);

仅供娱乐和恶搞哈,相信应该没有太多人喜欢在访问你网页的时候,听到你网页在放屁哈哈。(转自:我爱水煮鱼

WordPress 技巧:提高 WordPress 搜索的相关性

实在扛不住 Google 自定义搜索的速度了,把之前的搜索换回了 WordPress 自带的搜索,但是 WordPress 的默认搜索结果是按照文章的发布时间来排序的,这样的搜索结果的相关性并不强,应该让搜索结果按照内容相关性排序,而不是按照时间或者 ID,所以我们可以在当前主题的 functions.php添加如下代码来增强 WordPress 搜索的相关性:

add_filter(‘posts_orderby_request’, ‘wpjam_search_orderby_filter’);

function wpjam_search_orderby_filter($orderby = ‘’){

global $wpdb;

$keyword = $wpdb->prepare($_REQUEST[‘s’]);

return “((CASE WHEN {$wpdb->posts}.post_title LIKE ‘%{$keyword}%’ THEN 2 ELSE 0 END) + (CASE WHEN {$wpdb->posts}.post_content LIKE ‘%{$keyword}%’ THEN 1 ELSE 0 END)) DESC, {$wpdb->posts}.post_modified DESC, {$wpdb->posts}.ID ASC”;

}

上面的代码就是使得搜索的结构代码,先按照日志的标题的相关性排序,然后按照日志的内容,最后才是日的志修改时间和 ID,这样的修改之后,WordPress 搜索的结果相关性就提高了很多。

文章来源:fairyfish.net

wordpress文章ID重新连续编号

最近发现WordPress博客的文章id编号不连续的问题。上网找了很多教程,终于搞定了。整理归纳如下。

1、如何保持文章id连续

这个其实就是得去掉wp的自动保存功能。在 wp-config.php文件中 添加:

define(‘AUTOSAVE_INTERVAL’, 36000);

define(‘WP_POST_REVISIONS’, false);

2、如何将所有文章id重新编号

在 phpmyadmin 中执行下面语句:

ALTER TABLE `wp_posts` DROP `ID`;
OPTIMIZE TABLE `wp_posts`;
ALTER TABLE `wp_posts` ADD `ID` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

这个改了以后,好像关联的标签都不见了。不知道该怎么再整一下。我那博客因为还没啥文章,就手动加了一下。

3、梳理后,如何使文章id接着梳理后的最大id往后编

通过2中的方法将文章重新梳理成连续的ID,继续发表新文章时,ID还是会从之前不连续时的最大数字往后编。

这时,你只要修改下auto_increment的数值就可以了,即在phpmyadmin 中执行下面语句:

alter table wp_posts AUTO_INCREMENT=n

n=梳理后的最大id+1,比如说梳理后最后一片文章id是40,那么n就设为41。

版权所有 © 2024 野人部落实验室

主题设计 Anders Noren返回顶部 ↑