通知设置 新通知
关于WP Engine空间
Leo 发表了文章 • 1 个评论 • 3082 次浏览 • 2018-12-10 10:56
目前WP Engine主机共提供STARTUP、GROWTH、SCALE三款主机方案,都是非常适合用来搭建WordPress网站的。不过需要注意的,WP Engine主机价格却不便宜,最低价格是35美元/月(年付款可赠送2个月免费使用时间)
当然了,我还是不推荐这种主机的,没有操作上的难点,适合服务器小白使用,但是价格高,简言之,拿钱换方便,全自动,所谓全自动,也就是你的所有空间信息、域名信息(因为要绑定域名)也全是被其他人掌握的,你只需小手一点,一切便开始,便结束了。(好吧,这话是违心了)
废话不多说,以下是关于这个WP Engine的使用方法,我把迁移网站需要的一些必要设置列一下(顺序不分先后):
1、add domain (注意带www,我试过不带www,不会自动跳转,即使你解析那www记录添加了也不会跳转)
2、创建sftp 用户
3、wp-site-migrate安装这个插件(我已上传至附近,也可以在官网下载) 需添加你的wp engine登入邮箱、域名(注意带www)、主机ip地址和上一条提到的sftp用户名和密码,然后就可以开始Migrate迁移
4、迁移的时候只需配置前面几项,后面可选的可以不填,域名(带www),sftp用户名密码、ip地址,save一下就可以下一步,看到迁移进度条了,总共三个进度条,等全部100%之时,网站便已迁移成功可以打开了。
5、网站的用户名密码将是迁移之前网站的用户名密码
6、接着你可以配置ssl证书,最便宜的空间套餐是只能用空间提供的免费ssl和购买空间提供的rapidssl;
你还可以开启你网站的cdn;配置网站备份backup point以防万一;配置重定向等等;
在WP Engine空间成功开通一个网站后,也算是小小的颠覆了我以往对于网站开通的理解,当然是步骤上而非理念,不过是将步骤简化吧。
可能这就是一个新的趋势吧,所谓创新即将想法付诸于商业。 查看全部
目前WP Engine主机共提供STARTUP、GROWTH、SCALE三款主机方案,都是非常适合用来搭建WordPress网站的。不过需要注意的,WP Engine主机价格却不便宜,最低价格是35美元/月(年付款可赠送2个月免费使用时间)
当然了,我还是不推荐这种主机的,没有操作上的难点,适合服务器小白使用,但是价格高,简言之,拿钱换方便,全自动,所谓全自动,也就是你的所有空间信息、域名信息(因为要绑定域名)也全是被其他人掌握的,你只需小手一点,一切便开始,便结束了。(好吧,这话是违心了)
废话不多说,以下是关于这个WP Engine的使用方法,我把迁移网站需要的一些必要设置列一下(顺序不分先后):
1、add domain (注意带www,我试过不带www,不会自动跳转,即使你解析那www记录添加了也不会跳转)
2、创建sftp 用户
3、wp-site-migrate安装这个插件(我已上传至附近,也可以在官网下载) 需添加你的wp engine登入邮箱、域名(注意带www)、主机ip地址和上一条提到的sftp用户名和密码,然后就可以开始Migrate迁移
4、迁移的时候只需配置前面几项,后面可选的可以不填,域名(带www),sftp用户名密码、ip地址,save一下就可以下一步,看到迁移进度条了,总共三个进度条,等全部100%之时,网站便已迁移成功可以打开了。
5、网站的用户名密码将是迁移之前网站的用户名密码
6、接着你可以配置ssl证书,最便宜的空间套餐是只能用空间提供的免费ssl和购买空间提供的rapidssl;
你还可以开启你网站的cdn;配置网站备份backup point以防万一;配置重定向等等;
在WP Engine空间成功开通一个网站后,也算是小小的颠覆了我以往对于网站开通的理解,当然是步骤上而非理念,不过是将步骤简化吧。
可能这就是一个新的趋势吧,所谓创新即将想法付诸于商业。
关于升级wordpress5.0遇到的坑
chad 发表了文章 • 1 个评论 • 3314 次浏览 • 2018-12-08 14:25
首页我看到了一个巨丑的编辑器Gutenberg,方便以区块的形式构建页面,尼玛,这不坑爹吗?像我这种专业的老司机,让我用这玩意,而且最尼玛无语的是这玩意真的巨丑无比。具体丑到什么程度,废话不多说,上图为敬:
标题那么大,空白那么多,你这也太随意了点。
不管那么多,继续构建我的网站,等等,尼玛我的大神器Wpbakery去哪里了,旧的postType里到还能看到,可是新创建的分类,完全不见了神器的踪迹。没了这玩意,就仿佛掏空了我的心,这尼玛不是扯淡吗?果断打开Wpbakery设计界面,一切正常,隐藏自带编辑器功能开启,再次打开新创建的分类。嗯?尼玛出现了,但好像是给人家当了小弟,5.0自带的巨丑编辑器在上面,我滴大神器就生生的跟在它的下面。尼玛,不管了,还是继续工作重要,当我好不容易将页面元素填充到我的大神器中,点击保存。再次刷新,叮叮叮,尼玛大神器内一片空白。俨然从大神器变成了一块废铁,凑不要脸额gutenberg,尼玛这是斩草除根那。真是不能忍,还是乖乖将wordpress版本降低到4.9.8吧,我真是嫌弃古藤,打心底厌恶。找谷哥大大要资源的时候偶然看到,安装“Classic Editor plugin ”插件,可切换回原来的TinyMCE编辑器。尼玛,仿佛看到亲妈一样,这插件作者仿佛拯救了我滴小命,果断下载装之。我的大神器又回来了,来来感受下颜值:
完美!
查看全部
首页我看到了一个巨丑的编辑器Gutenberg,方便以区块的形式构建页面,尼玛,这不坑爹吗?像我这种专业的老司机,让我用这玩意,而且最尼玛无语的是这玩意真的巨丑无比。具体丑到什么程度,废话不多说,上图为敬:

标题那么大,空白那么多,你这也太随意了点。
不管那么多,继续构建我的网站,等等,尼玛我的大神器Wpbakery去哪里了,旧的postType里到还能看到,可是新创建的分类,完全不见了神器的踪迹。没了这玩意,就仿佛掏空了我的心,这尼玛不是扯淡吗?果断打开Wpbakery设计界面,一切正常,隐藏自带编辑器功能开启,再次打开新创建的分类。嗯?尼玛出现了,但好像是给人家当了小弟,5.0自带的巨丑编辑器在上面,我滴大神器就生生的跟在它的下面。尼玛,不管了,还是继续工作重要,当我好不容易将页面元素填充到我的大神器中,点击保存。再次刷新,叮叮叮,尼玛大神器内一片空白。俨然从大神器变成了一块废铁,凑不要脸额gutenberg,尼玛这是斩草除根那。真是不能忍,还是乖乖将wordpress版本降低到4.9.8吧,我真是嫌弃古藤,打心底厌恶。找谷哥大大要资源的时候偶然看到,安装“Classic Editor plugin ”插件,可切换回原来的TinyMCE编辑器。尼玛,仿佛看到亲妈一样,这插件作者仿佛拯救了我滴小命,果断下载装之。我的大神器又回来了,来来感受下颜值:
完美!
zoho salesiq设置时候的一个注意点,设置错误会导致网站报错,影响加载
Leo 发表了文章 • 1 个评论 • 2955 次浏览 • 2018-12-05 09:14
下图为其中一处关闭logo按钮的地方,总共有两处设置logo的地方,一个是浮动框,一个是内容框
查看全部
隽永东方教您如何通过设置WHM下的ModSecurity™ Tools来应对WordPress暴力登陆
East_Digi_Marketing 发表了文章 • 0 个评论 • 3266 次浏览 • 2018-12-02 11:47
近期美国服务器频繁发现有大量的wp-login.php进程消耗服务器资源,经过简单分析发现类似的进程都是暴力登陆WP网站的垃圾进程,手工挨个关闭效率极低,根本无济于事,于是设想通过某些服务器的过滤规则来应对类似的CC攻击。
经过一段时间的研究得出如下方法,能最大程度的应对类似的暴力攻击。
登陆WHM后台,点击左侧的 Security Center » ModSecurity™ Tools » Edit Custom Rules 如下图:
第三张图所示的地方插入代码:SecUploadDir /tmp
SecTmpDir /tmp
SecDataDir /tmp
SecRequestBodyAccess On
SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},initcol:user=%{REMOTE_ADDR},id:5000134
<Locationmatch "/wp-login.php">
# Setup brute force detection.
# React if block flag has been set.
SecRule user:bf_block "@gt 0" "deny,status:401,log,id:5000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
# Setup Tracking. On a successful login, a 302 redirect is performed, a 200 indicates login failed.
SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000136"
SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000137"
SecRule ip:bf_counter "@gt 10" "t:none,setvar:user.bf_block=1,expirevar:user.bf_block=300,setvar:ip.bf_counter=0"
</locationmatch>
ErrorDocument 401 default点击保存。
至此,您会发现,进程里边所有wp-login.php的进程都消失了,服务器负载也急速下降,问题fix了。 查看全部
最新备注:有发现用此教程方法开启安全设定以后,WordPress正常登录也被挡掉了,后来研究发现是其中 949110: Inbound Anomaly Score Exceeded 这条规则挡掉的,我们尝试把ID号为949110的规则关闭掉,WordPress就可以正常登录后台了。
近期美国服务器频繁发现有大量的wp-login.php进程消耗服务器资源,经过简单分析发现类似的进程都是暴力登陆WP网站的垃圾进程,手工挨个关闭效率极低,根本无济于事,于是设想通过某些服务器的过滤规则来应对类似的CC攻击。
经过一段时间的研究得出如下方法,能最大程度的应对类似的暴力攻击。
登陆WHM后台,点击左侧的 Security Center » ModSecurity™ Tools » Edit Custom Rules 如下图:
第三张图所示的地方插入代码:
SecUploadDir /tmp点击保存。
SecTmpDir /tmp
SecDataDir /tmp
SecRequestBodyAccess On
SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},initcol:user=%{REMOTE_ADDR},id:5000134
<Locationmatch "/wp-login.php">
# Setup brute force detection.
# React if block flag has been set.
SecRule user:bf_block "@gt 0" "deny,status:401,log,id:5000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
# Setup Tracking. On a successful login, a 302 redirect is performed, a 200 indicates login failed.
SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000136"
SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000137"
SecRule ip:bf_counter "@gt 10" "t:none,setvar:user.bf_block=1,expirevar:user.bf_block=300,setvar:ip.bf_counter=0"
</locationmatch>
ErrorDocument 401 default
至此,您会发现,进程里边所有wp-login.php的进程都消失了,服务器负载也急速下降,问题fix了。
在Woocommerce后台订单列表页面添加购买产品的详细信息
Bob 发表了文章 • 1 个评论 • 4189 次浏览 • 2018-11-29 17:13
add_filter( 'manage_edit-shop_order_columns', 'show_product_order',15 );
function show_product_order($columns){
//添加一列信息
$columns['product-display'] = __( 'Central Pedder Building Gallery Tour');
return $columns;
}然后在当前这段代码的下面在添加一段代码:
add_action( 'manage_shop_order_posts_custom_column' , 'snv_custom_shop_order_column', 10, 2 );
function snv_custom_shop_order_column( $column ) {
global $post, $woocommerce, $the_order;
switch ( $column ) {
case 'product-display' :
$terms = $the_order->get_items();
if ( is_array( $terms ) ) {
foreach($terms as $term)
{
echo $term['item_meta']['_qty'][0] .' ' . $term['name'] .'';
}
} else {
_e( 'Error!', 'woocommerce' );
}
break;
}
}后台显示的效果如下图所示:
查看全部
add_filter( 'manage_edit-shop_order_columns', 'show_product_order',15 );然后在当前这段代码的下面在添加一段代码:
function show_product_order($columns){
//添加一列信息
$columns['product-display'] = __( 'Central Pedder Building Gallery Tour');
return $columns;
}
add_action( 'manage_shop_order_posts_custom_column' , 'snv_custom_shop_order_column', 10, 2 );后台显示的效果如下图所示:
function snv_custom_shop_order_column( $column ) {
global $post, $woocommerce, $the_order;
switch ( $column ) {
case 'product-display' :
$terms = $the_order->get_items();
if ( is_array( $terms ) ) {
foreach($terms as $term)
{
echo $term['item_meta']['_qty'][0] .' ' . $term['name'] .'';
}
} else {
_e( 'Error!', 'woocommerce' );
}
break;
}
}
WP Favorite Posts 的使用方法(可用于收藏文章、产品)
Leo 发表了文章 • 1 个评论 • 3166 次浏览 • 2018-11-28 10:10
配置插件,最重要的是 Don't load js file这个选项要勾选,这样当你收藏这个产品的时候页面会自动刷新,列表就会更新。我之前试过不勾选这个选项,结果是我收藏了产品,但是列表没有更新(需要我手动去刷新页面)。
<div class="favorite">
<?php wpfp_link() ?> //这是调用收藏按钮
<?php dynamic_sidebar( 'sidebar-4' ); ?> //这是这个插件在小工具widgets中提供的收藏列表功能,我这个小工具的id为sidebar-4
</div>
具体效果如下图所示:
查看全部
配置插件,最重要的是 Don't load js file这个选项要勾选,这样当你收藏这个产品的时候页面会自动刷新,列表就会更新。我之前试过不勾选这个选项,结果是我收藏了产品,但是列表没有更新(需要我手动去刷新页面)。
<div class="favorite">
<?php wpfp_link() ?> //这是调用收藏按钮
<?php dynamic_sidebar( 'sidebar-4' ); ?> //这是这个插件在小工具widgets中提供的收藏列表功能,我这个小工具的id为sidebar-4
</div>
具体效果如下图所示:
window.print()如何打印指定区域
Leo 发表了文章 • 2 个评论 • 3163 次浏览 • 2018-11-21 14:47
.noprint{
display: none;
}
}
定义一个class,noprint
然后可以给你不想打印的地方加上noprint这个class,这样打印的时候就会隐藏这些elements。
一般我们可以给头部、底部加上这个class。
其实window.print()就是执行了浏览器自带的一个打印功能,让我们不用在浏览器上找打印,而直接通过点击网页上面任意一个已规定好的元素,进行打印。发现这种打印是没办法打印JavaScript以及多数css(有少部分css样式可以打印出来),只能就是打印一下图文 查看全部
@media print{
.noprint{
display: none;
}
}
定义一个class,noprint
然后可以给你不想打印的地方加上noprint这个class,这样打印的时候就会隐藏这些elements。
一般我们可以给头部、底部加上这个class。
其实window.print()就是执行了浏览器自带的一个打印功能,让我们不用在浏览器上找打印,而直接通过点击网页上面任意一个已规定好的元素,进行打印。发现这种打印是没办法打印JavaScript以及多数css(有少部分css样式可以打印出来),只能就是打印一下图文
推荐两个lazy load 插件
Leo 发表了文章 • 1 个评论 • 2911 次浏览 • 2018-11-21 10:19
2、Lazy Load by WP Rocket 作者WP Media 是wp-rockets开发团队开发的补丁插件,只需激活即可
经过测试,这两个插件在多数网站是没有问题的,具体根据不同网站实际情况使用。网站加载速度有肉眼可见的提升,不过在得分上面还是没有很明显的提升,因为谷歌对各项资源加载的要求是非常苛刻的,举例:一张1920px*500px的banner图,压缩至200kb不到,但是谷歌要求你还要减掉一半多的资源大小,这样肯定会严重影响图片清晰度。
谷歌page得分提升之路漫长,仍需努力! 查看全部
产品详情页可以用的放大镜效果
Leo 发表了文章 • 2 个评论 • 2888 次浏览 • 2018-11-16 13:49
/*引入资源*/
<link rel="stylesheet" href="css/smoothproducts.css">
<script src="js/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/smoothproducts.min.js"></script>
/*html+php*/
<div class="sp-wrap">
<?php if( have_rows('image_gallery') ): ?>
<?php while( have_rows('image_gallery') ): the_row();
$image = get_sub_field('add_img');
$image_url = $image[url];
?>
<a href="<?php echo $image_url ?>">
<img alt="<?php the_title();?>" src="<?php bloginfo('template_url')?>/timthumb.php?src=<?php echo $image_url ?>&w=400;&h=400;&zc=1" width="400" height="400" class="img-responsive"/>
</a>
<?php endwhile;endif;?>
</div>
/*jquery配置*/
<script type="text/javascript">
/* wait for images to load */
$(window).load(function() {
$('.sp-wrap').smoothproducts();
});
</script>
资源包下载:
看附件 查看全部
/*引入资源*/
<link rel="stylesheet" href="css/smoothproducts.css">
<script src="js/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/smoothproducts.min.js"></script>
/*html+php*/
<div class="sp-wrap">
<?php if( have_rows('image_gallery') ): ?>
<?php while( have_rows('image_gallery') ): the_row();
$image = get_sub_field('add_img');
$image_url = $image[url];
?>
<a href="<?php echo $image_url ?>">
<img alt="<?php the_title();?>" src="<?php bloginfo('template_url')?>/timthumb.php?src=<?php echo $image_url ?>&w=400;&h=400;&zc=1" width="400" height="400" class="img-responsive"/>
</a>
<?php endwhile;endif;?>
</div>
/*jquery配置*/
<script type="text/javascript">
/* wait for images to load */
$(window).load(function() {
$('.sp-wrap').smoothproducts();
});
</script>
资源包下载:
看附件
利用bootstrap模态框做网站升级维护的提示消息框
Leo 发表了文章 • 1 个评论 • 2896 次浏览 • 2018-11-14 09:12
<script src="/notification/js/jquery.min.js"></script>
<script src="/notification/js/bootstrap.min.js"></script>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title" id="myModalLabel">
Website is being upgraded and maintained
</h4>
</div>
<div class="modal-body">
We will resume normal access as soon as possible<br>
Expect one hour,Stay tuned<br>
<div id="show"></div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</div>
<script>
//加载模态框
$('#myModal').modal();
var show = document.getElementById("show");
setInterval(function() {
var time = new Date(); // 程序计时的月从0开始取值后+1
var m = time.getMonth() + 1;
var t = time.getFullYear() + "-" + m + "-"
+ time.getDate() + " " + time.getHours() + ":"
+ time.getMinutes() + ":" + time.getSeconds();
show.innerHTML = t;
}, 100);
</script>
<style>
/*模态框*/
.modal-body{
font-size: 18px;
}
#show{
font-size: 30px;
}
.modal-open{
overflow-y: scroll;
padding-right: 0 !important;
}
/*主要是最后一个css样式,是fix掉bootstrap模态框关闭时的抖动问题*/
</style> 查看全部
<link rel="stylesheet" href="/notification/css/bootstrap.min.css">
<script src="/notification/js/jquery.min.js"></script>
<script src="/notification/js/bootstrap.min.js"></script>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title" id="myModalLabel">
Website is being upgraded and maintained
</h4>
</div>
<div class="modal-body">
We will resume normal access as soon as possible<br>
Expect one hour,Stay tuned<br>
<div id="show"></div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</div>
<script>
//加载模态框
$('#myModal').modal();
var show = document.getElementById("show");
setInterval(function() {
var time = new Date(); // 程序计时的月从0开始取值后+1
var m = time.getMonth() + 1;
var t = time.getFullYear() + "-" + m + "-"
+ time.getDate() + " " + time.getHours() + ":"
+ time.getMinutes() + ":" + time.getSeconds();
show.innerHTML = t;
}, 100);
</script>
<style>
/*模态框*/
.modal-body{
font-size: 18px;
}
#show{
font-size: 30px;
}
.modal-open{
overflow-y: scroll;
padding-right: 0 !important;
}
/*主要是最后一个css样式,是fix掉bootstrap模态框关闭时的抖动问题*/
</style>