备案 控制台
开发者社区 开发与运维 文章 正文

在WordPress中添加简书风格的连载目录和文章导航

简介: 结合jQuery和WordPress获取文章链接的函数实现一个简书风格的连载目录和文章导航

需求

自从机缘巧合的开始翻译 Gensis的系列教程,越来越沉迷于研究这款WordPress主题框架了,一边翻译一边学习一边也在自己的丘壑博客上实验。

最近又有了一个需求,想在该系列的每一篇上都加上一个目录列表和前后文章的导航链接,方便读者查找阅览。效果就像简书上连载小说的这个东西:

思路

总体上需要实现的是两部分内容,一个前后文章的链接按钮,一个目录的弹出框。

前后文章地址链接用WordPress自带的函数  previous_post_link() 和  next_post_link() 就可以很方便的获取到。具体针对我的需求,我只想在符合特定条件的情况下才显示前后页链接,所以还需要做一些条件判断,具体后面再说。

目录弹出框其实就是个很常见的modal(模态)框:

模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。

我仔细看了下Genesis Sample的 demo示例中貌似是没有自带这个效果的,所以这个需要自己实现一下。方法挺多,用纯CSS也可以,用jQuery也可以,用Vue.js也可以。纯CSS太难为我了,CSS对我来说都是黑魔法,想想就是一件很痛苦的事,放弃。用Vue.js也是可以的,但本次还是决定使用WordPress自带的jQuery。

要实现模态效果需要引入一个jQuery的模态插件,  remodal ,这个插件用法挺简单的,基本上是开箱即用,也自带了CSS主题,还可以做各种自定义配置,用来实现我的需求已经很够用,够用就行。虽然这个插件的作者已经弃坑不再更新了,但功能实现还是比较稳定的,也是有用户群体的,比如这个插件也在用, Genesis login modal box。

点开的弹出框的里面要出现该系列的所有文章链接。这个怎么获取呢?最笨的办法就是直接写死。。。但那样也太傻了。一开始走了点弯路,什么异步获取,什么写WP_Query。后来发现了一个最简单办法:WordPress的模板PHP文件里可以直接把shortcode的内容显示出来,有一个函数 do_shortcode() ,这就太方便了,把之前在 另一篇文章里用到的插件  display posts 的shortcode 直接拿过来就行了。下面就是开始代码部分了。

第一步 前后文章的链接

Genesis框架里面其实已经包含了这个功能,要在文章中自动插入前后文章的链接,只需要在子主题的function.php中加入一句:

这是一个快捷用法,Genesi会直接在文章后面显示出来前后链接,如下

或者还有一种更灵活的方法,可以根据需要调整要插入的位置,当然链接文字也是可以改的:

这确实很方便,默认会在所有文章后面都出现前后链接。但这不符合我的需求,我的需求是:

  • 只需要在添加了Genesis Explained这个tag的文章下面才显示
  • 在这两个链接中间插入一个“目录”的按钮
  • 只在同系列文章之间导航,不显示其他无关的文章
  • 如果文章是该系列的第一篇,那么就显示“已是最前
  • 如果文章是该系列的最后一篇,那么就显示“已是最后
  • 点击目录弹出该所有系列所有文章链接

我们可以打开  genesis/lib/structure/post.php 文件看看里面的  genesis_adjacent_entry_nav() 是怎么实现的。可以发现,其实它就是自动帮你把WorPress的函数 get_previous_post_link 和 get_next_post_link做了一层封装。那这样就好办了,照着它模仿一下,改成自己的函数,如下

genesis_exlained_post_nav

代码里面已经加入了注释,主要用的就是 get_previous_post_link 和 get_next_post_link, 这两个函数和 不带get的那两个用法是一样的,区别是previous_post_link 和 next_post_link只自动打印出来,这样就不好做条件判断了。TRUE可以让前后文章的链接限定在同一个目录中。

这样就已经基本实现了前面几个需求了,虽然有点丑,但是先不管它,效果如下:

第二步 添加模态对话框

这一步很简单,直接把remodal的JavaScript文件和CSS文件下载下来,扔进子主题的js文件夹里,注册到WordPress里就行了,都不需要在写额外的js文件来初始化或者运行这个插件。当然如果在更复杂的场景里,比如登录框或其他需要一些异步回调的内容,那就需要另写一个js文件来使用了。

现在remodal.js就准备好了,现在还需要一个div元素给remodal来调用,并在这个div原理里面放翻入需要呈现的内容。这里的shortcode内容也是 之前的文章里写过的,直接拿过来用就ok了。具体如下:

对话框和内容都有了,怎么让remodal可以把这个框给弹出来呢?remodal的文档里提供了两种方式,一种是在a标签中使用 #,还有一种是使用 data-remodal-target


<a href="#modal">Call the modal with data-remodal-id="modal"</a>


<a data-remodal-target="modal">Call the modal with data-remodal-id="modal"</a>

所以,把刚才预留的目录链接<a>目录</a> 修改一下 ,再把这一步的div内容填入进去(这个div部份理论上可以网页的任何位置),修改后如下:

现在效果就基本实现了

第三步 CSS

CSS一直是让我觉得很纠结的一个东西,除非裸奔否则是绕不开这个令人头疼的玩意的。最后还是用了一个土法炼钢的办法,直接在gutenberg 里插了一个三栏框,然后用预览模式抠出来这块的html,直接怼进到php文件里去了,是个很脏的办法。。。。不过适应性很好。。

THE END

就这么着吧。。。。还有4、5篇的没有翻呢。。。不要太监了就行吧

实际的最终效果欢迎从第一篇开始参观浏览: Genesis框架从入门到精通(1):什么是框架?

丘壑
目录
相关文章
angel_kitty
WordPress更新提示无法创建目录的解决方案
WordPress更新提示无法创建目录的解决方案
angel_kitty
273 0
蓝易云
|
14天前
|
存储 PHP 数据库
蓝易云 - WordPress建站教程:服务器目录指南
了解这些目录和文件的作用,可以帮助你更好地管理你的WordPress网站,以及解决可能出现的问题。但是,请注意,除非你清楚自己在做什么,否则不要随意修改这些目录和文件,因为这可能会导致你的网站出现问题。
蓝易云
25 0
北京六翼开源
|
JavaScript 前端开发
什么是 WordPress 块目录?
WordPress 块目录是一类免费的 WordPress 插件,它提供第三方 WordPress 块以供在 WordPress 块编辑器中使用。
北京六翼开源
61 0
什么是 WordPress 块目录?
北京六翼开源
|
前端开发 SEO
北京六翼分享:5个必备的WordPress免费版目录插件
北京六翼分享:5个必备的WordPress免费版目录插件 网站目录是将个人或组织的相关信息(如姓名、电子邮件、联系人)分组的目录,以便可以从一个位置访问它们。该目录的一些示例是财产清单、血库、餐馆等。在线目录使人们可以轻松访问任何列出的服务的信息,如果您使用 WordPress 进行网站开发,您可能熟悉您可以在您的网站上使用的许多目录插件和主题。
北京六翼开源
99 0
北京六翼分享:5个必备的WordPress免费版目录插件
技术小胖子
|
Web App开发 应用服务中间件 PHP
网站二级目录或者子目录安装 WordPress 伪静态规则设置方法,服务器为nginx
技术小胖子
2230 0
吐葡萄皮
遇到wordpress无法创建目录的问题。
吐葡萄皮
1299 0
余二五
|
PHP Apache 数据库
EC2 WordPress 移动目录
余二五
1235 0
技术小胖子
|
Web App开发 应用服务中间件 PHP
Nginx下让WordPress支持伪静态规则及网站下级目录配置伪静态教程
技术小胖子
1994 0
wsc449
|
数据库
wordpress无法建立目录wp-contents/uploads/***/***没有上级目录的写权限
问题描述 当时在wordpress中上传图片时,上传不成功,右边报没法建立目录等错误! 解决方案 找到wordpress数据库,打开wp_options表 修改表中键名为upload_path的键值,添加” ...
wsc449
1769 0
wsc449
wordpress首页无法看到添加的目录
问题描述 在使用wordpress的过程中,想要让首页的目录管理的好看一些,但是发现在后台添加目录后,在首页并不能看到刚添加的目录,这是什么原因呢? 解决方案 这是因为,wordpress的本来约定,如果单单建目录,目录下没有文章,那么该目录视为空,不会在首页展示。
wsc449
1058 0

热门文章

最新文章

  • 1
    WP-AutoPostPro WordPress自动采集发布插件
  • 2
    Docker部署WordPress LNMP(Nginx PHP MySQL)环境实践
  • 3
    百度BAE环境下WordPress搭建过程
  • 4
    wordpress自定义post_type,并且自定义固定链接
  • 5
    WordPress 给导航栏添加非菜单栏目
  • 6
    WordPress 4.6.1 安全修复版发布
  • 7
    Wordpress category 导航栏
  • 8
    WordPress Feed SQL Injection
  • 9
    securityvulns.com russian vulnerabilities digest wordpress 漏洞
  • 10
    基于阿里云服务器与宝塔面板安装和搭建WordPress个人网站(图文教程)
  • 1
    WordPress未经身份验证的远程代码执行CVE-2024-25600漏洞分析
    102
  • 2
    SiteGround如何设置WordPress网站自动更新
    52
  • 3
    WordPress外贸建站教程
    165
  • 4
    SiteGround搭建WordPress
    143
  • 5
    怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?
    95
  • 6
    信息收集 -- WordPress网站
    38
  • 7
    VPS搭建WordPress
    165
  • 8
    分享58个wordpress模板,总有一款适合您
    104
  • 9
    WordPress动漫图片主题cxudy模板
    102
  • 10
    服务器搭建记录 · Wordpress
    73
  • 相关课程

    更多
  • C++ 入门教程开发文档
  • 相关电子书

    更多
  • 宏光S导航安装教程
  • 《如何制作一个水平仪》
  • QQ移动页面框架优化实践
  • 相关实验场景

    更多
  • 通过Helm CLI部署wordpress到ACK集群
  • 手动搭建WordPress(CentOS 8)
  • 基于Linux命令实现WordPress手动建站
  • 使用阿里云容器服务和容器网络文件系统搭建WordPress网站
  • 基于函数计算快速搭建Wordpress博客系统
  • 基于函数计算快速搭建Typecho博客
  • 下一篇
    部署LAMP环境(Alibaba Cloud Linux 3)

    深圳SEO优化公司同乐网站关键词优化坪地如何制作网站坂田网站建设设计龙华外贸网站设计坑梓高端网站设计罗湖外贸网站建设同乐企业网站制作坂田标王平湖网站推广工具石岩网站优化按天收费福田关键词排名坪山网站优化软件丹竹头网站建设设计南澳网站改版大运seo优化横岗网站制作南联SEO按天收费石岩SEO按效果付费坂田网站搜索优化塘坑网络广告推广盐田网络推广坪山seo优化福永SEO按效果付费同乐营销网站民治外贸网站建设塘坑百度关键词包年推广坪山网站改版吉祥网站建设木棉湾网站seo优化大浪模板制作歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化