QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

本文介绍基于WordPress+PublishMarkdown快速构建方便好用的个人博客

泡沫乐园 2022-05-13 08:03

摘要:本文介绍了基于WordPress+PublishMarkdown快速搭建一个方便易用的个人博客,包括相关背景。不需要写代码,也不需要花很多时间折腾。适合有一定学习和使用能力的人。背景

WordPress 是一个广泛使用的博客框架,具有强大的功能和丰富的主题和插件生态系统。无论是专业的软件工程师还是其他不懂软件开发技术的人,WordPress都可以非常方便的使用。

Markdown 是一种轻量级的标记语言,可以让人们以易于读写的纯文本格式编写文档,并通过工具导出为 HTML、Word、图像、PDF 等文件格式,节省大量资金写文章的排版很费时间。特别是扩展的Markdown语法还可以支持代码高亮、MathJax数学公式、流程图等功能为知笔记发布到博客,对相关领域的人非常友好。

PublishMarkdown 是我自己开发的一个开源工具,用于将本地 Markdown 文件发布到博客。基于Electron实现,支持中英文,兼容Windows、Linux、MacOS平台。特点如下。

支持主流的Markdown语法、TOC、代码高亮、MathJax数学公式,支持本地预览和简单的编辑功能(推荐使用Haroopad、Typora等工具编写后使用本工具发布)。全自动博客发布。文章可以设置标题、摘要、固定链接、作者、发表时间、标签、分类等属性,并自动批量上传文章中的本地图片。支持多站点同时发布。目前支持MetaWeblog接口,兼容WordPress、csdn、cnblogs、oschina等博客。源码保留了继续开发其他博客接口的扩展性。已经通过本工具发布到异地的博客可以使用本工具进行更新(博客以固定链接,即url来区分),更新时不需要重复上传相同的图片(图片以文件md5来区分) )。本地编辑还是在线编辑?

WordPress 的 Markdown 支持。 WordPress 一直有一个问题,就是它对 Markdown 的支持并不完美。虽然 WordPress 有一些 Markdown 插件,但都是基于 WordPress 的在线文章编辑环境。

使用在线编辑器的体验不是很好。在线编辑器的功能比较简单。它需要在有网络的环境中编写。网络状况、浏览器故障等各种问题都可能打断写文章的思路,甚至导致文章草稿丢失,容易分散注意力。另外,文章写完后没有本地备份。一旦网站出现故障,就有文章完全丢失的风险。

因此,相当一部分用户在使用 Markdown 写文章时会使用本地 Markdown 编辑器,例如跨平台的 Typora、Haroopad 等。

原生 Markdown 的发布问题。然而,如何将本地编写的 Markdown 文件快速发布到 WordPress 博客中,却成了一个令人头疼的问题。虽然 Typora 等编辑器可以将 Markdown 生成的 HTML 复制并粘贴到 WordPress 文章编辑后台,但是当文章包含很多本地图片等时,这种方法非常不友好,需要手动将图片上传到 WordPress。 ,然后一一替换成文章。

写文章时图片上传到图床。对于本地图片的上传,部分用户在写文章的时候会选择直接上传图片到图床,获取图片的外部链接(URL),插入到Markdown中。发布到博客的时候,图床中的图片也是通过外链直接引用的,所以发布博客的时候可以直接粘贴HTML代码,不需要上传图片。图像床图像传输工具包括iPic、PicGo等成熟工具。单张图片上传后,可以自动将图片的外部链接复制到剪贴板,然后粘贴到 Markdown 编辑器中。这种方式除了让发布博客更方便之外,还可以为个人博客网站节省图片带来的服务器存储和流量消耗。

任何事情都有优点和缺点。写文章时直接传图,与使用在线编辑器写文章有类似的缺点。首先是你需要在写文章的同时完成上传图片的任务,容易分散你的注意力,而且你必须在良好的网络环境下写文章。网络故障,图传太慢,图传工具故障,可能会打断写文章的思路。 图片不本地备份,使用第三方图床。一旦图床出现问题,可能会导致所有博客图片挂掉,甚至完全丢失图片源文件。图片一旦上传后,将无法享受本地各种图片编辑工具的批量编辑功能,除非您一个一个下载并修改后再上传。有时可能会批量生成文章图片。比如一些Word、PDF等格式的文章,可以输出为HTML+本地图片,然后转成Markdown(Typora可以直接粘贴HTML富文本,会自动转成Markdown)。如果是自己上传图片,需要将图片外链一一替换。

基于微知笔记的博客解决方案

基于以上问题,需要一个全自动的本地Markdown发布解决方案。 2015年初,经过大量研究和实践,实现了基于WordPress+微知笔记的博客解决方案,发表文章WordPress+Markdown+微知笔记,实现高品质笔记和博客。个人博客没花太多时间推广,但是这篇文章已经积累了2w+阅读量。

基于Hexo的博客解决方案

使用微智笔记解决方案后,发现用免费的 GitHub Pages 和 Hexo 构建静态博客变得流行起来。 Hexo 原生使用 Markdown 编辑,本地渲染成静态 HTML 后直接同步到 GitHub Pages。

这种方案现在被广泛使用,但也存在一些问题。

首先,有一定的技术门槛,比较适合软件工程师使用,因为需要git、命令行等工具。与许多空间服务提供商相比,他们直接提供了开箱即用的 WordPress 环境。直接图形界面安装各种主题和插件,Hexo的配置过程要复杂得多。

静态博客的功能远不如动态博客。比如基本的评论、搜索、流量统计,需要借助第三方服务,或者使用黑客手段,或者很难实现。

另外,如果之前使用过WordPress,发布博客的迁移成本比较高。当然,这不是 Hexo 的问题。不同的博客框架不能互相导入文章是正常的。

智健的问题

我已经使用知经博客解决方案几年了,但后来遇到了一些问题。

目前只有Windows版微知笔记可以支持发布博客。下班后,我逐渐转向Mac系统。每次发博客,只能启动Windows虚拟机,然后使用Windows版微知笔记发布。

对于已经发表的文章,虽然微知笔记支持本地编辑,然后同步修改到远程,但是每次编辑都会重复上传文章中的同一张图片,导致大量重复图片WordPress 背景。所以每次编辑带图片的文章,都是在本地和WordPress后台编辑,而不是使用知笔记的编辑功能。

文章必须写在微知笔记中,或者复制到微知笔记。下班后,习惯了直接用 Markdown 文件写博客,用 git 来管理文件版本,比常规笔记软件的版本管理要强大。但是这样一来,在发布前需要先转入笔记给它,而且图片太多就很难了。此外,Weizhinotes 现已开始收费。对于一些没有使用过微知笔记的用户来说,为博客发布功能付费似乎是无法接受的。

微智笔记是一款商业软件。是否以及如何使用它主要取决于Weizhinote团队(尽管他们的客户服务实际上还不错)。微智笔记博客发布功能中的代码高亮和MathJax渲染方案进行了大调整,导致我之前的微智笔记博客方案失败。具体细节是发布时不再渲染,需要在博客中配置插件。好在我有一定的开发能力,对WordPress主题源码做了一些修改,解决了这个问题。

PublishMarkdown 的诞生

由于识笔记的各种问题,跨平台、开源、免费、低影响的全自动Markdown发布工具需求量很大。

网上找了很多,都没有找到合适的,可以直接使用。主要找了几个命令行工具,但有的只是demo级别的代码,或者支持的Markdown语法不完善,不支持自动批量上传图片。命令行环境配置繁琐,使用不直观,本地看不到渲染。效果后,不确定Markdown是否正确。所以一直想自己开发这样一个图形化的工具。

因为涉及的技术很多,而且我从来没有做过桌面应用,难度很大,而且工作忙,没时间尝试。直到去年,我终于有了一些空闲时间来开发这个工具。名字简单明了,就叫PublishMarkdown。完美解决了上一篇的问题。

PublishMarkdown 建立在 Electron 之上,并且是原生跨平台的,与 Windows、MacOS 和 Linux 兼容。 PublishMarkdown 会在编辑已有文章时自动判断,不会重复上传同一张图片。 PublishMarkdown 可以直接发布独立的 Markdown 文件,并且可以使用任何 Markdown 编辑器编辑 Markdown 文件。 PublishMarkdown 本身也提供了简单的 Markdown 编辑功能,但建议使用其他更好的编辑器。 PublishMarkdown 是一个开源软件。 Markdown中代码高亮和MathJax渲染的逻辑清晰明了,方便用户使用。如果将来需要调整,将添加配置选项,而不是直接更改。对于 WordPress 用户,使用 PublishMarkdown 发布博客,只需要安装配置代码高亮插件和 MathJax 插件即可。您不需要开发自己的 WordPress 主题或软件开发能力。基于PublishMarkdown+WordPress的博客解决方案

和微知笔记一样,PublishMarkdown目前支持广泛使用的MetaWeblog接口发布博客,并且兼容WordPress等支持该接口的博客(据说CSDN、CNBlogs、OSChina等),但目前还没有实际测试,你可以自己研究)。这里只介绍PublishMarkdown和WordPress实现博客的典型方案。

WordPress 建设

WordPress建设 网上有很多文章。对于没有技术开发基础但有一定动手能力的朋友,或者不想花大量时间折腾的朋友,可以考虑直接使用现成的WordPress空间,或者使用托管服务商如提供一键配置 WordPress 的 Linode。域名、主机等一些相关的基础知识,也可以参考我写的系列文章。网站建设从零开始。

WordPress 配置

1、永久链接设置(可选)

PublishMarkdown 支持为文章设置永久链接,即 url 参数,详见 Markdown 编写。建议在WordPress后台设置permalink为%postname%,如图。

2、代码高亮和 MathJax 插件(可选)

如果需要代码高亮和 MathJax 功能,您需要在 WordPress 中安装相应的插件。

代码高亮可以直接安装WP Code Highlight.js,无需特殊配置。

MathJax 插件可以安装 Simple Mathjax,自定义 mathjax 配置参数如下。

MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [['\\(', '\\)']],
        displayMath: [['\\[','\\]']]
    }
})

如果配置后博客加载缓慢,可以尝试将Custom mathjax CDN参数设置为

PublishMarkdown 安装和设置

PublishMarkdown 下载地址:

github.com/jzj1993/PublishMarkdown/releases

下载安装后,使用默认设置即可。主要是在渲染设置中,需要将代码高亮和MathJax公式设置为“Preview only”,如图。

降价写作

Markdown 源文件应为扩展名为 .md 且编码为 UTF-8 的文本文件。

Markdown 可以在任何编辑器中编写,只要它符合 PublishMarkdown 支持的语法即可。推荐使用 Typora 编写。 PublishMarkdown 中的一些语法格式与 Typora 中的语法格式基本相同。

支持基本的 Markdown 语法、TOC、代码高亮、MathJax 公式,并在文件开头使用 YAML 语法来定义文章的信息。

详细的语法规则可以在工具的示例文档中找到为知笔记发布到博客,也可以在 GitHub 上的源文件中找到。以下是已删除源代码的示例。重点需要注意的是,建议为文章配置url参数。编辑已发表文章时,根据此参数区分不同文章。

---
# 注释:文件开头使用YAML语法配置文章信息,之后是正常的Markdown语法
# 此处如果不配置标题,则提取Markdown中的一级标题,或使用文件名
title: 示例标题
# 此处如果不配置摘要,则从正文提取开头若干文字
abstract: 你好!这是一篇示例文档!
# URL用于固定链接、编辑文章功能,建议所有文章都配置,建议用小写字母+数字+连字符
url: sample-docs-1
# 文章发布时间,使用的时区和系统设置一致,不设置则使用当前时间
date: 2020-02-01 18:35:43
# 文章分类
category:
- 分类1
- 分类2
# 文章标签
tags:
- 标签1
- 标签2
---
# Markdown内容
## 二级标题
段落
代码块
```js
const axios = require("axios");
// ...
```
MathJax分隔符和Pandoc中规定的一致。行内公式在单个美元符号之间 $\frac{a}{b}$。如果美元符号紧跟数字,不会识别为行内公式 $20,000 and $30,000。如果起始美元符号紧跟空格,或终止美元符号前面是空格,也不会识别为公式 $ \frac{a}{b} $。
行内代码不识别为公式 `$\frac{a}{b}$`。
行间公式在两个美元符号之间。同样,代码块不识别为公式。
$$ U_o = A^2 * ( U_+ - U_- ) $$

PublishMarkdown中的效果如下。

Markdown 的发布

在菜单中打开设置页面,添加所需的已发布博客。 WordPress 博客的 URL 格式是。

在菜单中打开要发布的.md文件,确认渲染结果是否正确,然后在菜单中点击发布,勾选Blog,点击发布。 PublishMarkdown会自动渲染文章,将文章中的所有本地地图上传到WordPress,最后将文章发布到博客,发布完成后会弹出系统通知。

PublishMarkdown 的技术实现

如果您对PublishMarkdown的技术实现感兴趣,或者想了解更详细的原理和开发流程,如果遇到问题,可以访问我的另一篇博客,PublishMarkdown技术实现。也欢迎您向 GitHub 提交问题和 PullRequest。

本文由jzj1993原创,转载请注明出处:paincker.com/publish-markdown