使用 WordPress 快速打造我的 Wiki

本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或从新修改使用,但须要注明来源。 署名 4.0 国际 (CC BY 4.0)php

本文做者: 苏洋html

建立时间: 2019年06月28日 统计字数: 3644字 阅读时间: 8分钟阅读 本文连接: soulteary.com/2019/06/28/…nginx


使用 WordPress 快速打造我的 Wiki

今年年初的时候,我曾经写过接近十篇博客,介绍如何“从零到一搭建Wiki”,聊过了 MediaWiki、Doku、Confluence、Tiddly、MoinMoin 等系统,可是这里涉及的许多系统的写做体验都不是很好。web

在以后,我也写过几篇 “如何使用容器技术搭建 WordPress” 的文章,据官方数据称 WordPress 目前已经占据了互联网 34% 的应用,写做体验和插件生态其实仍是很棒的,那么咱们为什么不使用 WordPress 来搭建 Wiki 呢?docker

在使用了4个月以后,体验下来问题不大,我决定把方法分享出来,但愿能帮到更多的人。若是你熟悉 WordPress 的搭建,本篇将文章两三分钟内就可以搞定啦。编程

明确目标

在搭建以前,咱们明确一下我的 Wiki 的主要功能(以我我的为例):浏览器

  • 简洁好用的编辑器、可以支持 Markdown。
  • 支持全文搜索、可以快速根据关键词获取参考内容。
  • 支持附件管理、最好可以支持远程图片自动转存。
  • 支持分类和标签功能。
  • 可选的支持评论功能(单人使用可忽略)。
  • 高可扩展性、可是维护成本要尽量的低。

别看这些功能都很“基础”,文章开头提到的软件,这些功能或多或少都不支持、或者作的差强人意呢。bash

前置准备

搭建过程以前的文章中有提,有兴趣的同窗能够进行翻阅。cookie

固然,你也可使用传统的方案进行搭建。session

Wiki 界面定制

使用最新的 5.0 版本的软件,默认安装完毕后,你将看到下面的界面。

默认的 WordPress 5.0 界面

默认的界面适合展现博客列表内容,对于 Wiki 用途而言不是特别友好,解决方案十分简单,咱们进入管理后台,先将 ** 二〇一九** 主题切换为 ** Twenty Sixteen** 。

打开管理后台主题页面

而后点击主题上方的“自定义”按钮,开始对主题进行自定义调整。点击左侧菜单的小工具,而后按照你的需求对主题进行调整,好比我在这里,保留了“搜索框”、“分类目录”、“近期文章”、“功能”四个模块,并按照这个顺序对模块进行了调整。

定制侧边栏功能

接着打开 设置菜单中的阅读页面,将主页显示调整为静态页面,并选择静态页面为示例页面。

将首页改成“静态”页面

当前展现的页面看起来仍是不像一个Wiki,那么咱们继续进行调整。

仍是打开管理后台的主题菜单页面,选择最后一项编辑(Theme Editor),开始对主题源文件进行修改。(若是你由于一些缘由不能在浏览器直接修改这个文件,也能够经过编辑 wp-content/themes/twentysixteen/page.php 文件来达到一样效果)

在右侧选择 page.php ,原始的代码以下:

<?php
/**
 * The template for displaying pages
 *
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages and that
 * other "pages" on your WordPress site will use a different template.
 *
 * @package WordPress
 * @subpackage Twenty_Sixteen
 * @since Twenty Sixteen 1.0
 */

get_header(); ?>

<div id="primary" class="content-area">
	<main id="main" class="site-main" role="main">
		<?php
		// Start the loop.
		while ( have_posts() ) :
			the_post();

			// Include the page content template.
			get_template_part( 'template-parts/content', 'page' );

			// If comments are open or we have at least one comment, load up the comment template.
			if ( comments_open() || get_comments_number() ) {
				comments_template();
			}

			// End of the loop.
		endwhile;
		?>

	</main><!-- .site-main -->

	<?php get_sidebar( 'content-bottom' ); ?>

</div><!-- .content-area -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
复制代码

修改很简单,咱们把最下面的 get_sidebar(); 放到 <main> 以前,并补充一段样式便可。

<?php
/**
 * The template for displaying pages
 *
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages and that
 * other "pages" on your WordPress site will use a different template.
 *
 * @package WordPress
 * @subpackage Twenty_Sixteen
 * @since Twenty Sixteen 1.0
 */

get_header(); ?>

<div id="primary" class="content-area">

	<style>
		.sidebar{
			column-count: 5;
		    column-width: 240px;
		    column-gap: 20px;
		}
	</style>

	<?php get_sidebar(); ?>

	<main id="main" class="site-main" role="main">
		<?php
		// Start the loop.
		while ( have_posts() ) :
			the_post();

			// Include the page content template.
			get_template_part( 'template-parts/content', 'page' );

			// If comments are open or we have at least one comment, load up the comment template.
			if ( comments_open() || get_comments_number() ) {
				comments_template();
			}

			// End of the loop.
		endwhile;
		?>

	</main><!-- .site-main -->

	<?php get_sidebar( 'content-bottom' ); ?>

</div><!-- .content-area -->

<?php get_footer(); ?>
复制代码

当你在 Wiki 中适当填充一些内容以后,你会获得这样的页面。

调整风格为类Wiki目录树

Markdown 语法支持

在插件中心搜索并安装 WP Githuber MD ,完成以后,记得启用插件。

再次打开编辑器,你会发现本来的所见即所得编辑器就变成了咱们熟悉的左右分栏的 Markdown 编辑器。

Markdown 编辑器插件界面

代码高亮

在浏览器性能愈来愈高的今天,咱们几乎彻底不须要再使用服务端进行代码高亮啦。而且我的 Wiki 几乎没有搜索引擎 SEO 的需求。

在插件中心搜索并安装 WP Code Highlight.js,启用插件后,文章中的代码便会自动进行高亮展现啦。

调整代码高亮风格

用户自动登陆

若是你是我的使用,搭建在内网,彻底不须要考虑权限问题,那么能够和我同样,设置 WordPress 自动登陆。

wp-config.phprequire_once ABSPATH . 'wp-settings.php'; 前,添加下面一段代码。

if ($_SERVER['SCRIPT_NAME'] == '/wp-login.php') {

    require_once ABSPATH . 'wp-settings.php';
    require_once ABSPATH . '/wp-load.php';

    if (
        isset($_SERVER['QUERY_STRING']) &&
        (strpos($_SERVER['QUERY_STRING'], '=logout') !== false)
    ) {
        wp_destroy_current_session();
        wp_clear_auth_cookie();
        do_action('wp_logout');
    } else {
        $user_login = getenv('WP_USER');

        $user = get_userdatabylogin($user_login);
        $user_id = $user->ID;

        wp_set_current_user($user_id, $user_login);
        wp_set_auth_cookie($user_id);
        do_action('wp_login', $user_login);
    }
    wp_redirect(home_url(), 302);

    die;
}
复制代码

实现原理很简单,赶在程序大部队执行前,劫持应用登录路由,自动替用户设置登陆状态。

最后

WordPress 是一款开源免费的软件,由 PHP 编写。前文提过,据官方数据,目前已经占据了 34% 的互联网软件份额。

Use the software that powers over 34% of the web. — wordpress.org/download

我我的从 2009 年开始使用它到如今:

在新浪云工做的时候,我负责过 WP4SAE 的开发维护,即便不看平台下载数据,单从我每次换公司,都能发现有很多的同事用过,就能够看出用户量应该还不错(偷笑); 在淘宝工做的时候有写过几个下载量还不错的 WP 插件,其中一个被 360 CDN 资源站官方推荐(用于替换 Google Fonts,加速博客打开); 也曾基于它(淘宝UED博客)作过一套自动化的 D2 会议电子票程序,历史 GitHub 仓库到如今还有近千 pull request 和大几百的 fork; 还曾在内部使用它做为 confluence 的替代者,存放多个修改版本的技术文章…

从某种意义来讲,我也算是见证了这套软件的进化过程。固然,个人我的成长过程当中也屡次受惠于这套软件。我认为这是一款伟大的软件,某种意义来讲,也是一个很成功的开源项目。

但从网上的帖子来看,一旦提起这款软件,老是出现过分的批判,甚至许多人根本不知道时过境迁,一些事情早已被改变。甚至出现了批判 WordPress 是政治正确的事情… 技术没有银弹,软件也是,在适合的场景用适合的技术,遇到问题分析并解决问题,才是技术人应该作的事情,而不是一味批判和吐槽。

感谢 WordPress ,替我节约了大量的时间去折腾更有意思的事情。

— EOF


我如今有一个小小的折腾群,里面汇集了一些喜欢折腾的小伙伴。

在不发广告的状况下,咱们在里面会一块儿聊聊软件、HomeLab、编程上的一些问题,也会在群里不按期的分享一些技术沙龙的资料。

喜欢折腾的小伙伴欢迎扫码添加好友。(请注明来源和目的,不然不会经过审核)

关于折腾群入群的那些事

相关文章
相关标签/搜索