问题

想做一个在右侧显示的文章目录, 使用文章目录的插件 Easy Table of Contents, 将其添加到右侧的侧边栏中, 很轻松做到了这点.

但是, 一个新的问题出现了. 这个目录的工具, 需要在文章页面显示, 而在其他页面不显示.

那么问题来了, 如何让不同的页面显示不同的侧边栏工具呢?

在网上找了一些教程, 基本上都是推荐安装插件的, 通过这种方式确实可以解决, 但是安装插件会拖慢网站的加载速度, 能不能自己实现呢?

解决

转念一想, WordPress提供了那么多的钩子, 有没有合适的钩子能够对页面工具进行过滤呢?

在官网上 https://developer.wordpress.org/reference/hooks/ 通过关键字 widget搜索相关的钩子, 结果发现人家确实提供了. 官方提供了很多钩子, 需要的时候可以先看一下有没有需要的.

就是: sidebars_widgets, 可以针对小工具进行过滤.

回调函数收到的参数长这样:

{"wp_inactive_widgets": ["block-2","block-3","block-4","block-6","block-8","block-10","block-11","block-12","block-15","block-16","block-18","block-19"],"sidebar-1": ["block-20","custom_html-2","categories-2","ezw_tco-2"],"header-widget": [],"footer-widget-1": [],"footer-widget-2": [],"advanced-footer-widget-1": [],"advanced-footer-widget-2": [],"advanced-footer-widget-3": [],"advanced-footer-widget-4": []
}

其中sidebar-1就是侧边栏工具列表啦. 那么思路就很清晰了, 只要在不同的页面对不同的工具进行过滤, 就可以达到效果啦.

下面给出我添加的过滤方法, 我的需求是在文章页面仅显示目录工具, 其他页面去掉目录工具. 仅供参考(将代码添加到 functions.php 文件中).

这里注意, 管理后台不能过滤, 否则你在后台的小工具页面也看不到了.

/*** 侧边栏小部件过滤* @author hujing*/
add_filter( 'sidebars_widgets',  function ($widgets){// 后台界面, 都不过滤if(is_admin()) return $widgets;// 判断是否是目录部件$isEzwTco = fn($i) => strpos($i, 'ezw_tco-') === 0;// 对侧边栏内容进行过滤$filterSidebar = function ($isKeep) use (&$widgets){foreach ($widgets as $type=>&$tmpList){// 找到侧边栏, 进行过滤if(strpos($type, 'sidebar-') === 0){$tmpList = array_filter($tmpList, $isKeep);}}};// 文章页面, 侧边栏值留下目录if(is_single()){$filterSidebar(fn($i) => $isEzwTco($i));}else{ // 非文章页面, 将侧边栏的目录过滤$filterSidebar(fn($i) => !$isEzwTco($i));}return $widgets;
});

原文链接: https://hujingnb.com/archives/679

Wordpress不同页面显示不同小工具相关推荐

  1. Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

    [Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新) 0 2014-05-07 18:00:06 使用该控件,可以根据url,参数,加载html记录模板(包含 ...

  2. WordPress中使主题支持小工具以及添加插件启用函数

    https://www.jb51.net/article/76810.htm 这篇文章主要介绍了WordPress中使主题支持widget以及添加插件启用函数的方法,使WP可以使用小工具widget与 ...

  3. WordPress 开发带缩略图随机文章小工具

    以前曾经分享了一篇 给WordPress后台小工具增加一个随机文章,但没有附加缩略图的功能,为了让你的随机文章看起来更吸睛,这里加上特色图像的缩略图,效果如本站左边栏的随机文章,步骤和代码如下: 后台 ...

  4. 转wordpress小工具制作前台后台全解析

    wordpress主题制作中对边栏的处理一直是我们比较烦恼的,我们希望边栏的变化更多更复杂,今天我们就来具体讲解下wordpress边栏小工具的制作. 一.让你的主题显示小工具 有些相当简单的主题你会 ...

  5. WordPress添加侧栏小工具-博客统计(网站统计)

    WordPress侧边栏"博客统计"小工具的制作方法.首先要下载cztcms.zip文件,解压得到一个PHP文件.蓝奏云地址:▶ cztcms.zip 1.将这个PHP文件放到主题 ...

  6. WordPress 开发带缩略图的小工具最新文章

    在我们的wordpress边栏想显示我们发布的最新文章,并且带上缩略图,很多插件能帮我们完成这个功能,其实我们完全可以自己DIY,和wordpress原生态的小工具一样,直接拖过去就OK了,这里把流程 ...

  7. WordPress标签云小工具详解

    WordPress标签云小工具是WordPress程序自带的一个小工具,它可以在我们的博客侧边栏展示网站的标签列表.今天WordPress小工具详解系列就从WordPress标签云小工具开始.带大家熟 ...

  8. 快捷键调出计算机桌面小工具,工具推荐:巧用快捷键秒变电脑高手

    - 前言 - 最近迷上了新剧<西部世界>,美国西部丶科幻丶人工智能丶完美结合,大爱,这次的图就用剧照啦,回归正题. 如果电脑是你工作的主要方式,那么熟练使用键盘快捷键可以帮助提高工作效率, ...

  9. STM32——EMWIN窗口小工具(十三)

    EMWIN 文章目录 EMWIN 前言 一.小工具基础知识 二. 如何使用小工具 1.重绘机制 2.小工具的使用 三.通用控件 API 函数 1.用于控件的 WM 函数 2.常用 API 函数 3._ ...

最新文章

  1. 个人开发者做一款Android App需要知道的事情
  2. C# OpenGL 环境配置和入门程序
  3. Redis分布式锁抽丝剥茧
  4. 休眠事实:了解刷新操作顺序很重要
  5. HH SaaS电商系统的销售订单付款后生成采购单和出库单的时序图
  6. php scandir遍历,php使用scandir()函数扫描指定目录下所有文件示例
  7. ORACLE小错误和小技巧
  8. 五角星是不是旋转对称图形_新部编二年级下册数学第10单元总复习教案,克和千克、图形的运动...
  9. printf格式化字符串_Java printf()–将格式化的字符串打印到控制台
  10. 单播、广播和多播IP地址
  11. utc时间 单位换算_国际时间换算
  12. 修改mdf ldf文件权限修改方法
  13. 如何练就超强的学习能力?这才是最好的答案
  14. Codeforces 524C Idempotent functions
  15. GMap.Net 实现离线地图
  16. 使用 Laragon 在 Windows 中搭建 PHP开发环境及常见问题解决
  17. JVM之jstat命令
  18. 前端资料整理--持续更新中
  19. 一花独放不是春,华为与用友共同构建百花齐放生态
  20. 关于H1N1的预防,目前为止最好的忠告

热门文章

  1. [spring boot] ------ 总结1
  2. python中issubset是什么_python3解释器执行 {2, 3, 4}.issubset({2, 3, 4})的结果为__。
  3. tft lcd驱动参数详解_LED拼接屏和LCD拼接屏的区别
  4. JAVA入门级教学之(对象和引用)
  5. linux 查看进程_Linux怎么查看和监控每个进程的实时流量
  6. php无法连接mysql_php无法连接数据库
  7. Java转JSON串的几种方式
  8. 苹果ppt_你的PPT太low了,学学苹果吧
  9. java文件传输连接方式_Java 学习笔记 网络编程 使用Socket传输文件 CS模式
  10. long mode 分页_x86 系列 CPU 内存寻址模式总结