本鱼拟成立工作室承接项目开发/软件定制/云设施开发运维/办公设备技术支持等,如您有相关需求,欢迎来询 | ::博客文章推荐::

从零开始在Windows上安装WordPress简明教程 [3]

: 网络/NET 木魚 7375℃ 14评论

第一篇从零开始在Windows上安装WordPress简明教程 [1]
第二篇从零开始在Windows上安装WordPress简明教程 [2]

 

6. 安装主题

博主使用的YUSI主题(的修改版),原主题地址在: http://yusi123.com/3233.html

提示:博主有修改,如果后面有同学有兴趣的话可以共享。

6.1 下载

从这里下载主题:http://yusi123.com/go/yusitheme1 保存为 yusi1.0.zip

6.2 进入 WordPress 后台

进入外观主题,点击添加

install_wordpress_on_iis_s2_04
点击上传主题

install_wordpress_on_iis_s2_05
选择已下载的主题包,点击现在安装

install_wordpress_on_iis_s2_06

等操作完成后,会提示已经安装成功,要立刻启用可以点击“启用”,否则可以点击“返回”先回去再启用。

此时,WordPress已经换样子了。

install_wordpress_on_iis_s2_07

提示

主题中包含有较多的原始博客链接,可以进行修改。目录位于 wp-content\themes\yusi1.0 下,相关的PHP文件。
常见的有:
1. 404.php 找不到文件的错误页面中包含有一堆类别链接
2. footer.php 中包含页脚的信息
3. css和js中存在部分不完善以及错误的地方,这个根据自己的能力调整

7. 设置固定连接

此时WordPress的链接还是动态的,也就是如 http://127.0.0.1/?p=1 这样的,看起来有点LOW 038.gif
要想改成像普通URL肿么办?好办。

7.1 设置

进入WordPress后台,找到设置-固定链接,右侧设置即可。

install_wordpress_on_iis_s2_09

设置完了保存,就能看到效果了。

install_wordpress_on_iis_s2_10

点赞! 024.gif 

提示

本来这里之后是还需要设置URL回写的,但是现在WordPress对于IIS支持已经非常好,在有权限的情况下会自动添加回写规则到web.config中。
需要注意的是,建议进程池使用集成管道模式,比较方便处理,如果没有自动添加配置,可以复制 7.2 中的内容添加到现有配置(没有则新建)的适当位置。
此步骤需要URL回写功能的支持,如果你的IIS尚未安装重写,可以通过Web Platform Installer安装。

7.2 配置内容

以下内容添加到 web.config 中的 configuration/system.webServer 下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="wordpress" patternSyntax="Wildcard">
                    <match url="*" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

7.3 增加对URL中文以及标签中文的支持

以为上面就完成了吗?图样图森破  021.gif 
写一篇日志,起个中文标题。

install_wordpress_on_iis_s2_11

猜猜你看到什么了?

install_wordpress_on_iis_s2_12

对……404。
这是个啥鬼啊 012.gif !还让我玩游戏……

其实问题很简单,默认情况下WordPress对中文路径无法支持,所以出现这么个奇怪的问题了。要改掉也很简单,但是需要修改WordPress的文件了。

警告

一旦WordPress更新了,对文件做的修改就会被还原,因此更新后要仔细检查已更新的文件是否被还原了。
建议做好修改后文件的备份,并及时对比。

用记事本(或你喜欢的编辑器,其实不推荐用记事本)打开WordPress下的 wp-includes\class-wp.php 文件,搜索 $_SERVER['PATH_INFO'] ,找到如下内容:

			$error = '404';
			$this->did_permalink = true;

			$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';
			list( $pathinfo ) = explode( '?', $pathinfo );
			$pathinfo = str_replace( "%", "%25", $pathinfo );

			list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );
			$self = $_SERVER['PHP_SELF'];
			$home_path = trim( parse_url( home_url(), PHP_URL_PATH ), '/' );

 将中间带有 PATH_INFO 和 REQUEST_URI 的两行修改为,如下所示。

			$error = '404';
			$this->did_permalink = true;

			$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK") : '';
			list( $pathinfo ) = explode( '?', $pathinfo );
			$pathinfo = str_replace( "%", "%25", $pathinfo );

			list( $req_uri ) = explode( '?', mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK"));
			$self = $_SERVER['PHP_SELF'];
			$home_path = trim( parse_url( home_url(), PHP_URL_PATH ), '/' );

 修改完保存即可。

这个同时搞定了中文标签的问题。。。

8. 屏蔽非HTTPS的Gravatar

感谢伟大的GFW,屏蔽了http的gravatar,WordPress加载会很慢。幸好https的还是没有阻止的 015.gif 
所以呢,用HTTPS的好啦。

解决方法很简单,用编辑软件打开 wp-includes\pluggable.php,搜索 is_ssl() 的位置,看到如下代码:

	if ( is_ssl() ) {
		$host = 'https://secure.gravatar.com';
	} else {
		if ( !empty($email) )
			$host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash[0] ) % 2 ) );
		else
			$host = 'http://0.gravatar.com';
	}

 将 is_ssl() 变成 true || is_ssl(),保存即可。

9. 安装 WP Super Cache

WP Super Cache是WordPress的一个静态化缓存,通过将页面在一定时间内缓存为静态文件,进而提速。

进入WordPress管理后台,找到插件-安装插件,搜索Super Cache,点击现在安装即可。

install_wordpress_on_iis_s2_13

提示安装完成后直接点击“启用插件”启用。

install_wordpress_on_iis_s2_14

安装后进入 设置- WP Super Cache,根据提示启用即可。

install_wordpress_on_iis_s2_15

选项可参考其本身的推荐。

install_wordpress_on_iis_s2_16

提示:缓存模式在IIS主机上不建议用mod_rewrite模式,因为此模式需要用URL回写,但是其生成的回写规则并不适用于Windows主机。

10. 安装 Google XML Sitemaps/WordPress导入工具/WP Mail SMTP 插件

Google XML Sitemaps 插件可以帮你生成站点的sitemap.xml文件,供搜索引擎使用。
WordPress导入工具可以从备份文件(wxr)中导入已有的博客和评论。在后面介绍的导出QQ空间并在WordPress中导入的过程中,需要它的协助。
WP Mail SMTP 可以用来自定义发送邮件的设置。

11. 安装 TinyMCE Advanced 插件

TinyMCE Advanced是一个编辑器增强插件,用来增强并自定义编辑器的功能。
除此以外,这个插件带上了一些编辑器扩展插件,比如表情。如果你想要自定义表情以及更方便地输入表情,那它是必不可少的(至少可以省掉很多的时间和精力)。

12. Crayon 插件

12.1 安装

Crayon是一个比较好用的代码高亮插件,代码狗必备。
设置中可以根据自己的需要设置,多试试即可。

提示:建议启用“代码中进行转义”,这个选项默认是关闭的。

12.2 改进编辑器体验

Crayon的高亮功能虽然很强大,但并不是万能的。考虑到使用客户端高亮的时候上下文缺失,其实是无法准确还原应该高亮的显示效果的。
考虑如下代码,你看到的是Crayon高亮的效果。

install_wordpress_on_iis_s2_21

而这是Visual Studio编辑器中显示的效果。

install_wordpress_on_iis_s2_17
可以看到,由于上下文环境的缺失,Crayon做不到完全准确地还原高亮颜色。因此,在Visual Studio支持直接将对应的代码高亮复制为HTML并支持粘贴到可视化编辑器中的时候,我们会希望能直接粘贴代码,而不是由客户端来重新高亮。

提示:这里使用的Visual Studio 2013添加了 Productivity Power Tools 扩展,它可以支持将代码高亮样式直接复制到可视化编辑器中。

但是我们首先就发现,代码的高亮是无法粘贴的。粘贴后会像如下所示:

install_wordpress_on_iis_s2_18

嗯,所有样式都不见了。如果你使用TinyMCE Advanced添加了编辑源码按钮并查看源码的话,你会发现所有的span标签样式全都被去掉了,甚至连Span标签都没了。。。 029.gif 

原因是因为TinyMCE做清理了,对粘贴的HTML内容做了格式化,干掉了它们觉得无效的东西。Google了一圈,反应这个问题的人不少,他们反应的问题集中在Word中直接粘贴过来后格式全乱了——一样的原因。
只不过很明显WordPress的开发组非常强势,他们觉得因为word粘贴过来的东西太多不标准的东西了,所以必须清理,因此从WordPress3.9版本开始会开始过滤并且无法关闭过滤。
我去,果然是任性的开发组啊。 022.gif 

但是方法不是没有的,在我研究了很久编辑器的流程后,发现增加额外的配置项即可阻止这个过滤,方法如下:

  1. 打开文件 wp-includes\class-wp-editor.php
  2. 找到如下的地方:
    			$mceInit = array (
    				'selector' => "#$editor_id",
    				'resize' => 'vertical',
    				'menubar' => false,
    				'wpautop' => (bool) $set['wpautop'],
    				'indent' => ! $set['wpautop'],
    				'toolbar1' => implode($mce_buttons, ','),
    				'toolbar2' => implode($mce_buttons_2, ','),
    				'toolbar3' => implode($mce_buttons_3, ','),
    				'toolbar4' => implode($mce_buttons_4, ','),
    				'tabfocus_elements' => $set['tabfocus_elements'],
    				'body_class' => $body_class
    			);
  3. 在最后的 ); 结束前,加上额外的内容,并在 $body_class 后面加上逗号,改好后如下所示:

    			$mceInit = array (
    				'selector' => "#$editor_id",
    				'resize' => 'vertical',
    				'menubar' => false,
    				'wpautop' => (bool) $set['wpautop'],
    				'indent' => ! $set['wpautop'],
    				'toolbar1' => implode($mce_buttons, ','),
    				'toolbar2' => implode($mce_buttons_2, ','),
    				'toolbar3' => implode($mce_buttons_3, ','),
    				'toolbar4' => implode($mce_buttons_4, ','),
    				'tabfocus_elements' => $set['tabfocus_elements'],
    				'body_class' => $body_class,
    				'extended_valid_elements' => '*[*]',
    				'paste_webkit_styles' => 'all'
    			); 
  4. 然后保存。刷新编辑器后,你会发现已经可以粘贴原来的样子了。

install_wordpress_on_iis_s2_19

12.3 增强插件的兼容性

你以为改了编辑器就会好了吗?图样图森破! 025.gif 

预览一下你会发现代码居然成这样子了:

install_wordpress_on_iis_s2_20

上面是从VS中粘贴的,下面是Crayon粘贴的效果。
很明显Crayon把粘贴的内容也当成自己的标签给处理了。究其原因是因为它们都是pre标签,而Crayon没有进行区分,全部处理了。

那肿么办!……别急,让我先喝口酒冷静一下。 020.gif 
嗯,改吧。

用编辑器打开文件 wp-content\plugins\crayon-syntax-highlighter\crayon_wp.class.php
找到下面的内容:

        if ((CrayonGlobalSettings::val(CrayonSettings::CAPTURE_PRE) || $skip_setting_check) && $in_flag[CrayonSettings::CAPTURE_PRE]) {
            // XXX This will fail if <pre></pre> is used inside another <pre></pre>
            $wp_content = preg_replace_callback('#(?<!\$)<\s*pre(?=(?:([^>]*)\bclass\s*=\s*(["\'])(.*?)\2([^>]*))?)([^>]*)>(.*?)<\s*/\s*pre\s*>#msi', 'CrayonWP::pre_tag', $wp_content);
        }

 

这里就是搜索代码标签并进行标记的。可是这里匹配的是所有的pre标签,不管是不是符合要求的。
要解决上面我们遇到的问题,那先来看看Crayon插入的标签和直接粘贴的有啥不同吧。
查看编辑器中的源码,我们会发现Crayon插入的标签是类似这样的:<pre class="lang:c# decode:true ">。
我们注意到class中有个lang:标记,好像可以用它来进行区分的。
那就改吧。

虽然哥几乎不写PHP,但这种三天从入门到精通的语言还是难不倒哥的。直接改上面的语句为下面这样的:

        if ((CrayonGlobalSettings::val(CrayonSettings::CAPTURE_PRE) || $skip_setting_check) && $in_flag[CrayonSettings::CAPTURE_PRE]) {
           // XXX This will fail if <pre></pre> is used inside another <pre></pre>
            $wp_content = preg_replace_callback('#(?<!\$)<\s*pre(?=(?:([^>]*)\bclass\s*=\s*(["\'])(.*?lang[:_].*?)\2([^>]*)))([^>]*)>(.*?)<\s*/\s*pre\s*>#msi', 'CrayonWP::pre_tag', $wp_content);
         }

 就是改了一下正则表达式,加了对lang:的存在性检测,不存在的时候不处理。

然后搞定,哒哒。。。。

喜欢 (7)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(14)个小伙伴在吐槽
  1. 老大 应该交出来自己改好的这套 嘿嘿~(●ˇ∀ˇ●)
    然后我们在学习修改~

    九炎2016-03-20 20:48 回复
  2. 044.gif

    那个同学2015-02-03 13:53 回复
  3. 1:喜欢 or 分享 怎么弄啊? 修改PHP文件么?
    2:浏览器和操作系统显示是怎么弄的呢?
    3:首页的hi,好久不见 登录咋个搞的
    4:链接各种你的微薄,facebook 推特那个是自定义的么

    那个同学2015-02-02 15:53 回复
  4. 1:喜欢 or 分享 怎么弄啊? 修改PHP文件么?
    2:浏览器和操作系统显示是怎么弄的呢?
    3:首页的hi,好久不见 登录咋个搞的
    4:链接各种你的微薄,facebook 推特那个是自定义的么

    呵呵呵2015-02-02 15:52 回复
    • 那个是主题自带的。

      木魚2015-02-02 15:54 回复
      • 没找到啊 – – 能具体点么00.gif

        那个同学2015-02-02 15:55 回复
        • 你用的是这个主题吗?是的话在设置-外观-主题设置里。

          木魚2015-02-02 16:27 回复
          • 好吧 昨天134功能都没显示。 一觉起来都有了 = = 但是第二个咋个弄哦

            那个同学2015-02-03 09:11
  5. 0003.gif

    risafa2015-01-21 19:42 回复
  6. 其实,我想说,我喜欢你…你这个富文本编辑器~~~:twisted:

    Kvkens2015-01-20 16:49 回复
    • 这个就是TinyMCE啊,有啥可喜欢的。。

      木魚2015-01-20 17:44 回复
      • 我也用了这个文本编辑器,之前我以为你贴代码高亮是因为自动做了什么,原来是元数据复制昂,准备按你教的改下。

        Kvkens2015-01-21 22:52 回复
        • 客户端是有高亮的。我之所以这么改,是因为有些编辑器里面是可以直接复制出高亮代码的,这样效果更好(着色更准确)。

          木魚2015-01-21 22:54 回复
  7. 不错啊!!0003.gif

    flyover2015-01-16 01:12 回复