初级WordPress模板制作入门

一套完整的WordPress模板应至少具有如下文件:

style.css : CSS(样式表)文件
index.php : 主页模板
archive.php : Archive/Category模板
404.php : Not Found 错误页模板
comments.php : 留言/回复模板
footer.php : Footer模板
header.php : Header模板
sidebar.php : 侧栏模板
page.php : 内容页(Page)模板
single.php : 内容页(Post)模板
searchform.php : 搜索表单模板
search.php : 搜索结果模板

当然,具体到特定的某款模板,可能不止这些文件,但一般而言,这些文件是每套模板所必备的。
继续阅读

我是怎么防范 WordPress 大规模暴力破解攻击的

攻击者主要是首先扫描 WordPress 网站,然后通过穷举法攻击 WordPress 的默认用户名:admin。

其实可以通过以下三个步骤来减少被攻击以及被攻陷的机会:

1、 在当前 functions.php 添加以下代码去掉 WordPress 版本信息,减少被扫描到的机会。

remove_action( 'wp_head', 'wp_generator');

2、 默认的用户名不要为 admin,通过一下 SQL 修改 admin 的用户名:

UPDATE wp_users SET user_login = 'newuser' WHERE user_login =  'admin';

3、 安装 Limit Login Attempts 插件,限制登陆尝试次数,防止通过穷举法获取后台密码。

wordpress中为不同位置的缩略图设置不同大小

新建主题函数

打开主题的functions.php文件,加入下面的代码:

// post thumbnail support
if ( function_exists( 'add_image_size' ) ) add_theme_support( 'post-thumbnails' );

if ( function_exists( 'add_image_size' ) ) {
add_image_size( 'post-thumb', 700, 270 );
add_image_size( 'home-thumb', 203, 203, true );
}

上面的代码让主题支持文章缩略图并让WordPress生成2个不同尺寸的缩略图。

“post-thumb”的宽度和高度分别是700px和270px ,“home-thumb”的宽度和高度分别是203px和203px,你可以根据主题手动修改这些数字。

如果有必要,你还可以给图片添加用在其他位置(比如存档页或侧栏文章列表)的尺寸。

home-thumb的最后一个变量是“true”——意思是让WordPress裁剪当前图片并另存为新图片。
继续阅读

wordpress 常见查询方法

方法1

$args = array ( 'post_parent' => 5 );
query_posts( $args );

if ( have_posts() ):
    while ( have_posts() ) :
        the_post();

        // Do stuff with the post content.
        the_title();
        the_permalink(); // Etc.

    endwhile;
else:
    // Insert any content or load a template for no posts found.
endif;

wp_reset_query();

继续阅读

Linux 和 Windows 双系统时间不一样的解决办法

这恐怕是所有装 Linux 和 Windows 双系统的人都会碰到的问题:Linux 系统的时间是对的,换到 Windows 系统,时间往往是早了上几个小时,那改吧,在线更新一下时间,改好了,再切换到 Linux 系统,结果时间是晚了几个小时,总之,Linux 和 Windows 总有一个时间是错的。

Windows 和 Linux 都把时间存在主板上的CMOS(保存计算机基本启动信息,如日期、时间、启动设置等),但这个“时间”的意义在它们的字典里不一样,讲个故事来说明,故事的主人公是上海的一台计算机,它的CMOS里存的时间是X年X月X日13时X分X秒X毫秒。

Windows 来了,它认为这个时间是当地时间,显示给用户看是X年X月X日13时X分X秒X毫秒,再根据用户设置的时区(上海是东8区),换算得到全球基准时间,即格林威治标准时间,得知全球基准时间为X年X月X日5时X分X秒X毫秒。

Linux 来了,它认为X年X月X日13时X分X秒X毫秒是全球基准时间,再根据用户设置的时区,换算得到当地时间是X年X月X日21时X分X秒X毫秒,于是它显示可用户看的就是21时。

知道原因了问题就好解决了,Windows 或 Linux 某一个系统改改适应对方就好了。这里给出让 Linux 认为时间是当地时间的办法。

执行 sudo timedatectl set-local-rtc true ,或在 /etc/adjtime 文件的末尾追加一行 LOCAL ,两个操作是等价的。之后重启,重新调整一下时间,万事大吉。

让 Windows 认为CMOS存的时间是世界基准时间也是可以的,方法不再赘述了。

Chrome 的 PAC 代理配置方法

Linux 下的 Shadowsocks-Qt5 只负责监听本地的一个端口,为连接上来的请求提供代理服务,而哪些应该走代理哪些该走正常渠道,并不做区分,所以只能靠上层应用来区分了,即哪些应该连到 Shadowsocks-Qt5 监听的端口哪些不连上去。

执行 man google-chrome ,找到了如下选项:

–proxy-pac-url=URL
Specify proxy autoconfiguration URL. Overrides any environment variables or settings picked via theoptions dialog.

先从网上找了个 PAC 文件,将设置 proxy 的那句改成 var proxy = "SOCKS5 127.0.0.1:1080;";,我的 Shadowsocks-Qt5 监听的是 127.0.0.1:1080,协议是 SOCKS5。再把这个 PAC 文件存到固定一个位置,比如我存在了 /home/wolfogre/Documents/autoproxy.pac,然后再命令行里执行:/usr/bin/google-chrome-stable %U --proxy-pac-url=file:///home/wolfogre/Documents/autoproxy.pac,Chrome 打开了,已经可以开心地上 Google 了,而访问一般的网站也没有走代理。

问题来了,每一次打开 Google 都要敲这么长的命令简直反人类,我还是希望通过点菜单里的漂亮图标启动。菜单里的所有图标启动项其实都是 /usr/share/applications 里的 *.desktop 文件,关于这一点下一节会在做说明,现在要做的就是以管理员身份编辑google-chrome.desktop ,在里面每一句 Exec=/×××× (应该有三句,分别针对普通打开,新疆窗口,佚名打开)的行末追加 --proxy-pac-url=file:///home/wolfogre/Documents/autoproxy.pac

这时候打开 Chrome 就能开心地上 Google 了。

Network Manager显示设备未托管的解决办法

Linux里面有两套管理网络连接的方案:

1、/etc/network/interfaces(/etc/init.d/networking)

2、Network-Manager

两套方案是冲突的,不能同时共存。

第一个方案适用于没有X的环境,如:服务器;或者那些完全不需要改动连接的场合。

第二套方案使用于有桌面的环境,特别是笔记本,搬来搬去,网络连接情况随时会变的。

他们两个为了避免冲突,又能共享配置,就有了下面的解决方案:

1、当Network-Manager发现/etc/network/interfaces被改动的时候,则关闭自己(显示为未托管),除非managed设置成真。

2、当managed设置成真时,/etc/network/interfaces,则不生效。

WordPress怎样完美地更换域名

网站的域名从旧域名 www.olddomain.com 更换为新域名 www.newdomain.com

第一步,开始之前,要做好备份,备份好网站数据库和网站文件,尤其是数据库。

第二步,将新域名做好解析和绑定操作。

第三步,登录主机管理系统,进入phpmyadmin,选择WordPress网站所使用的数据库。

选中该数据库之后,点击SQL,输入以下代码:

UPDATE wp_options SET option_value = replace(option_value, 'www.olddomain.com', 'www.newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'www.olddomain.com', 'www.newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'www.olddomain.com', 'www.newdomain.com');
UPDATE wp_comments SET comment_content = replace(comment_content, 'www.olddomain.com', 'www.newdomain.com');
UPDATE wp_comments SET comment_author_url = replace(comment_author_url, 'www.olddomain.com', 'www.newdomain.com');

如果不确定WordPress使用的是哪一个数据库,可以查看WordPress目录下的 wp-config.php 配置文件,查看其中的 DB_NAME 设置。

与直接在WordPress的管理后台修改域名相比,这个办法有两个优点:

  1. 即便旧域名已经失效了,也可以更换新域名;因为整个操作过程中,根本不需要登陆WordPress的管理后台。
  2. 更换比较彻底,不光更换了网站的域名,连文章内部的链接,图片和音视频等媒体文件的地址、链接,以及评论中的链接等,都一起进行了更换。