如何根据特定类别登录页面过滤小部件

时间:2020-03-17 作者:klewis

如果这个问题太简单,我提前道歉。但我在谷歌上找不到任何有助于我进一步研究的资源。

我的场景:

  • 我的网站上总共有3个独特的类别登录页
  • 从同一个侧栏,在wp admin->外观->小部件中,我必须添加这个小部件3 times 到我的侧栏,以便此小部件的每个实例都从我的3个类别中筛选文章。

    加载站点时,侧栏将显示3个巨大的链接侧栏部分。我不想那样。。。我希望我的“A类”登录页只显示A类文章。当我转到我的“B类”登录页时,我希望它只显示我的B类文章,等等。。。

    我能做什么我可以采用前端方法,只要在加载所有内容后使用JavaScript修改DOM,并隐藏任何给定类别登录页不需要的3个部分中的2个。

    但是在PHP中,WordPress是如何高效地按照小部件所在的类别登录页过滤小部件的显示的呢?有没有高级指南让我学习这项技术?

1 个回复
最合适的回答,由SO网友:Mikhail 整理而成

第一个想法:

您可以创建自定义小部件,该小部件将在其显示逻辑中包含必要的条件检查,以仅显示必要或可变的内容,利用is_category() 有条件的检查专用小部件的文档和教程https://developer.wordpress.org/themes/functionality/widgets/

另一个想法:

您可以使用过滤器sidebars_widgets 在其中,您将根据您的条件删除不必要的小部件,使其无法呈现。查看更多信息https://developer.wordpress.org/reference/hooks/sidebars_widgets/

使用自定义小部件的方法将更加通用,因为使用它,您将能够完全按照您想要的方式呈现它。和筛选sidebars_widgets 更适用于需要删除\\隐藏某些小部件的情况,例如用户是否登录。

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'