saber 酱的抱枕

Fly me to the moon

07/14
2017
学习

给WordPress文章里的图片添加放大效果

css3 javascript js scale wordpress 图片放大

昨天我在初音社(www.mikuclub.cn)看到了这个效果,有些地方的图片在鼠标经过时会放大,感觉很棒,整个网页似乎生动了不少,今天我也给自己的网站添加上了这个效果。

首先分析一下原理:在图片外层套了一个容器,这个容器和图片大小一样,设置超出隐藏。然后给图片添加上放大效果就可以了。

不过初音社应用这个效果的地方的宽高是固定的,但本站文章里的图片宽高是不一致的,所以需要用JavaScript来设定外层容器的宽高。

实现步骤如下:

首先添加css样式:

.img_scale_wrap{overflow: hidden;} /*外层元素*/
.post_t img{transition:1s;} /*设置过渡时间*/
.post_t img[data-scale]:hover{transform: scale(1.2);} /*放大效果*/

然后添加JavaScript代码:

var post_img = document.querySelectorAll(".post_t img");	// 获取所有图片
if (post_img.length > 0) {
    // 给图片添加缩放控制层
    function set_post_img_wrap(img) {
    	if (img.height>=500) {	// 大于一定尺寸的才添加放大效果
    		img.setAttribute("data-scale", "");	// 添加放大属性
    		var post_img_wrap = document.createElement("div");
    		post_img_wrap.className = "img_scale_wrap";
    		img.parentNode.insertBefore(post_img_wrap, img);
    		post_img_wrap.appendChild(img);
    		post_img_wrap.style.width = img.width + "px";
    		post_img_wrap.style.height = img.height + "px";
    	}
    }
    // 给图片添加事件
    for (var i = post_img.length - 1; i >= 0; i--) {
        if (post_img[i].complete) {
            set_post_img_wrap(post_img[i]);
        } else {
            post_img[i].onload = function() {
                set_post_img_wrap(this);
            }
        }
    }
}

本文的代码也可以用在其他类型的网站上,不只是WordPress里才能用。但是移植时要按自己情况修改css选择器和js选择器。

给WordPress文章里的图片添加放大效果

06/29
2017
软件

网站搬家记录

现在的网站:

 Apache iis web.config wordpress 伪静态 教程 经验 网站搬家

(话说IIS 8.5 比起IIS 6真是方便了太多)

以前我的网站用的是香港的一家虚拟主机,从一开始到现在,三年的时间都是在用那个空间。(主机商是51php,总体上满意,售后服务挺好。以后不用它了,就当做是帮它宣传一下吧)

其实我的网站只占用极少的磁盘空间和数据库空间,只有流量用的多。随着流量逐渐增长,我也不断升级主机套餐,最近又面临不得不升级的情况,我觉得不能再这样继续下去了,正好最近尝试了vultr的vps,所以打算把网站搬到vultr上面去。

本月的主机使用情况:

 Apache iis web.config wordpress 伪静态 教程 经验 网站搬家

其实现在套餐的流量是30GB/月,前几天就用完了,现在的45GB是我让客服临时加了点。虽然我最近做了些优化措施,但预计以后每月流量仍会达到20GB以上,现在这个套餐的流量未来也会不够用。

相比现在的虚拟主机,vultr的vps有诸多优势:
1.价格不贵,5美元/月,一年也就400RMB,和我现在这个虚拟主机套餐差不多是相同价位,但流量上限高得多;
2.vps可直接登陆操作系统,管理网站更为便捷,可以摆脱掉ftp了,对网站的控制也更加随心所以了;
3.避免一些奇葩的事情,比如之前我发现我的主机被禁止google抓取了,后来我找客服解除了限制。
3.vps作为一个操作系统,能做的事情比只能放网站的虚拟主机强多了,最简单的应用就是充当vpn上网。其他的比如架ss什么的我还没研究过。

我原来的虚拟主机的环境是Linux + Apache,但因为我不会linux,所以vultr上我安装的是windows + IIS。这个搬家的过程也踩了不少坑,也记录一下吧。
Read More →

网站搬家记录

02/16
2017
学习

用PHP做一个设置网站副标题的接口

用PHP做一个设置网站副标题的接口 WordPress php 副标题 JavaScript aja mysql 数据库

WordPress设置网站副标题需要到后台的设置项里设置,操作起来太繁琐,于是我用php做了个设置网站副标题的接口。这个没什么技术含量,主要是熟悉下php对mysql数据库的基本操作流程。

首先是到数据库里找到网站副标题的字段:

用PHP做一个设置网站副标题的接口 WordPress php 副标题 JavaScript aja mysql 数据库

找到之后写出用于修改它的sql语句,如下:

UPDATE wp_options SET option_value = '大好き' WHERE option_name = 'blogdescription'

接下来做一个html文件和一个php文件,用html文件给php文件发送要设置的副标题,php接到请求后执行数据库操作。

功能做好之后,把html传到网站上,并保存成书签。以后想修改修改副标题只要打开这个书签,输入文字就可以了。
Read More →

用PHP做一个设置网站副标题的接口

12/29
2016
学习 软件

WordPress设置301重定向

我刚才发了一篇文章:《WordPress绑定多个域名的方法》,使得“saber.我爱你”和“saber.love”都能访问本站,并且域名是分开的,“saber.我爱你”进来后,网站所有链接都是“saber.我爱你”开头的,“saber.love”亦然。

但是这样可能会使搜索引擎认为这两个域名建立的是镜像站点,可能会导致权重分散等不利后果,所以还是做301重定向比较稳妥。

由于301重定向性质所致,我需要把《WordPress绑定多个域名的方法》里添加的代码去掉,不然这会导致网站有两套url,就达不到301重定向的目的。

做301重定向首先要确定我们最后想要使用的是哪个域名(我是用的是www.saber.love),到后台常规设置里把“WordPress地址(URL)”和“站点地址(URL)”都改成这个域名。

之后在根目录的wp-blog-header.php的开头,加入以下代码:

// 301重定向到www.sbaer.love
if (strtolower($_SERVER['SERVER_NAME']) != 'www.saber.love')
{
	$URIRedirect=$_SERVER['REQUEST_URI'];
	if(strtolower($URIRedirect)=="/index.php")
	{
		$URIRedirect="/";
	}
	header('HTTP/1.1 301 Moved Permanently');
	header('Location:http://www.saber.love'.$URIRedirect);
	exit();
}

这样,“saber.love”、“www.saber.我爱你”、“saber.我爱你”都会被301 永久重定向到“www.saber.love”了。

相关资料:301 Moved Permanently

WordPress设置301重定向

12/29
2016
学习 软件

WordPress绑定多个域名的方法

之前我的博客是“saber.我爱你”域名,最近注册了“saber.love”,我想给我的博客同时启用这两个域名。

不过我遇到了一个问题:虽然saber.love可以解析到我的网站上,但是WordPress后台并没有绑定多个域名的功能。

WordPress的设置里有WP_SITEURL和WP_HOME,不管通过哪个域名进来,网站页面里所有的链接(如文章链接、后台路径等)的域名用的都是WP_SITEURL和WP_HOME里的设置。

我后台设置的WP_SITEURL和WP_HOME原本都是“http://www.saber.我爱你”,当我通过“saber.love”进入网站时,页面上所有链接依旧都是“http://www.saber.我爱你”开头的,点击任何链接就都又转到“saber.我爱你”了。

不过我们可以通过wp-config.php来动态设置WP_SITEURL和WP_HOME,可以真正的使用多域名打开网站,所有页面的链接都是对应的域名。

找到wp-config.php最后一行:

require_once(ABSPATH . 'wp-settings.php');

在它前面添加动态设置WP_SITEURL和WP_HOME的代码就可以了:

$current_sitename=$_SERVER['HTTP_HOST'];
if ($current_sitename=="saber.love"||$current_sitename=="www.saber.love") {
	define("WP_SITEURL", "http://www.saber.love");
	define("WP_HOME", "http://www.saber.love");
}else if ($current_sitename=="saber.love"||$current_sitename=="www.saber.love") {
	define("WP_SITEURL", "http://www.saber.love");
	define("WP_HOME", "http://www.saber.love");
}

这样设置后,网站所有页面均可以用我们设置的多个域名访问,包括后台操作都是完全正常的。

ps:上面代码中设置的WP_SITEURL和WP_HOME都会访问网站的根目录,实际上也可根据需要设置成任意层级的目录。

WordPress绑定多个域名的方法

07/31
2016
学习

获取WordPress文章的短链接

如果我们启用了WordPress的固定链接,那么每篇文章都会有一个短链接和一个固定链接。短链接是数字id,固定链接则是根据我们预设的格式生成的。

如本文有以下两个链接可以打开:

获取WordPress文章的短链接
http://www.saber.love/获取wordpress文章的短链接

由于短链接是不会变的,而固定链接却可以被修改,所以发布网址时,使用短链接更加可靠。

以前WordPress在编辑文章时有个获取短链接按钮,现在没有了。我照网上说的一些方法也没能让它显示出来。不过仍然有两个办法可以看到短链接:

1.编辑文章时点击预览,在预览页面的url里包含有文章id。发布过的文章、没有发布的文章,都可以这么看。
2.在文章的前台页面里,也保存有短链接。我们可以执行如下代码获取它:

document.querySelectorAll("link[rel=shortlink]")[0].href

获取WordPress文章的短链接

06/7
2016
学习

Bulk Delete——WordPress内容批量删除插件

Bulk Delete——WordPress内容批量删除插件

Bulk Delete是一款WordPress插件,可以批量删除一些内容,例如根据tag或分类批量删除文章、批量删除页面,甚至可以批量删除评论和用户。还有其他一些功能,不过我是美誉深入了解了,我用它一次性删除了几个分类的文章(别担心,不是本站)。

Bulk Delete——WordPress内容批量删除插件

如图,可以以此删除某分类下所有文章,还支持选择多个分类哦~

Bulk Delete——WordPress内容批量删除插件

10/8
2015
学习

修改WordPress标签云

刚才看到网站底部的标签云里,最后一行只有两个tag,感觉很不爽,想调整下显示数量,但是在后台没找到选项。于是又是一番百度,找到了方法。

在主题的functions.php中追加对标签云的设置:

//修改标签云
add_filter('widget_tag_cloud_args','style_tags');  
//修改标签云样式
function style_tags($args) {
$args = array(
  'largest'=> '22',
  'smallest'=> '8',
  'format'=> 'flat',
  'number' => '45',//显示数量
  'orderby' => 'count',
  'order' => 'ASC'
);
return $args;
}

你也可以打开wp-includes/category-template.php,修改wp_tag_cloud这个函数,里面也是这些参数,只不过比这更多些。一些参数的意义如下:

smallest – 定义标签的最小字号,默认为 8;
largest – 定义标签的最大字号,默认为 22;
unit – 设置字号类型,如 “pt” 或 “px” 等,默认为 “pt” 类型;
number – 设置标签云数量,默认显示 45 个标签;
orderby – 设置按 “name” 或 “count” 排序,默认为 “name” 方式;(注:orderby=count 表示按照标签使用次数排列)
order – 设置按 “DESC” 或 “ASC” 升降序排列,默认为 “ASC” 升序。

修改WordPress标签云

09/29
2015
学习

备份和恢复WordPress的记录

四季映姫 东方

虽然本站看起来和以前一模一样,不过已经换了空间重新装了一次哦~在这里总结下经验吧~

首先要备份的是数据库,建议从phpmyadmin里直接备份,导出sql格式。但这样的话一定要询问下客服,导入时限制的文件上限是多大。因为默认情况下mysql只支持2M以下的sql文件的导入。

其次去备份WordPress的文件,需要备份的是wp-content里面的plugins、themes、uploads文件夹。此外如果你修改了WordPress的文件,也备份出来。

最后检查其他需要备份的文件,例如.htaccess、favicon.ico、robot.txt、网站地图等文件。

恢复的时候先装上WordPress,然后把网站的文件传上来。最后去数据库里,清空WordPress的所有数据表,再导入之前的数据库备份。

当然域名解析和空间绑定也要改,这个就不多说了。

备份和恢复WordPress的记录

08/29
2015
学习

为WordPress制作404页面

我用的这个主题对404的处理不太好,它不经过任何提示,直接展示首页内容(没有跳转过程,所以地址栏的链接还保留着错误的链接)。所以我今天搜索了一番,做了自己的404页面。

本文内容适用于WordPress+Apache。

首先建立个404.php的文件,我的模板内容如下:

<?php get_header(); ?>
<div id="ctn">
    <div id="content">
        <div class="post_ctn">
        	<hgroup class="post_hctn">
        		<div class="post_h_l">
        			<h2 class="post_h"><a href="">Error:404 Not Found</a></h2>
        		</div>
        	</hgroup>
            <div class="post_t">
                <p><img src="/f/404.jpg" alt="404"></p>
                <p>诶?竟然给老娘弄出404?</p>
                <p style="font-weight: bold;font-size:20px;">如果您是从搜索结果点击进来看到的404,<a href="" id="toRight" style="font-weight: bold;text-decoration: underline;">您可以点击这里到达正确的页面</a></p>
                <script>
                if (location.href.indexOf(".html")==-1) {
                    $("#toRight").attr("href",location.href.substring(0, location.href.length-1).concat(".html"));
                };
                </script>
                <p>访问本站出现404,一般是因为以下原因:</p>
                <p>本站启用固定链接之后,搜索引擎未全面更新收录。所以有时候搜索结果里的文章链接是错误的。</p>
                <p>如果上面的链接仍然不正确,您可以搜索您需要的内容:</p>
                <?php get_search_form(); ?>
                <p>您也可以<a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">访问首页</a>,或给我<a href="/%e7%95%99%e8%a8%80#comment">留言</a>,告诉我问题的详细情况。</p>
            </div>
        </div>
    </div>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

我用了文章页面的模板,把文章区域添上了自己的内容。如果你和我的模板不一样,参考主体部分就行了。

为了便于备份,我把404.php放到了模板目录中。你也可以放到网站根目录里。

到这里,你可以输入一个错误的网址试试,如果能出现404页面就OK了。如果不能,则需要编辑.htaccess文件,在WordPress规则的结束标记之前插入404指示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
//......
</IfModule>
ErrorDocument 404 /wp-content/themes/clearisionchild/404.php
# END WordPress

注意,不要插入到其他规则(如上例中的IfModule规则)之中。

为WordPress制作404页面