跳到主要内容

条件显示侧边栏某个小工具

· 阅读需 2 分钟

当然可以实现条件显示。我们可以在小工具的 widget() 方法中添加条件判断,以决定是否显示小工具。这里是如何修改小工具代码来实现这一功能:

class Recent_Category_Posts_Widget extends WP_Widget {
// 构造函数保持不变

public function widget($args, $instance) {
// 检查当前页面是否属于 "dreamcar news" 分类
$current_category = get_queried_object();
if ($current_category instanceof WP_Term && $current_category->slug === 'dreamcar-news') {
return; // 如果是 "dreamcar news" 分类,直接返回,不显示小工具
}

// 如果不是 "dreamcar news" 分类,继续显示小工具
echo $args['before_widget'];

// 小工具的其余内容保持不变
// ...

echo $args['after_widget'];
}

// form() 和 update() 方法保持不变
}

这段代码的工作原理如下:

  1. 使用 get_queried_object() 获取当前查询的对象(在分类页面中,这将是分类对象)。
  2. 检查该对象是否是 WP_Term 类型(即分类术语),并且其 slug 是否为 'dreamcar-news'。
  3. 如果条件满足,函数直接返回,不显示小工具。
  4. 如果条件不满足,继续显示小工具的内容。

请注意,这里假设 "dreamcar news" 分类的 slug 是 'dreamcar-news'。如果实际的 slug 不同,请相应地调整代码。

此外,如果你想在更多的情况下隐藏小工具,你可以扩展这个条件。例如:

public function widget($args, $instance) {
// 获取当前页面的分类
$current_categories = get_the_category();

// 检查是否在任何不想显示小工具的分类中
$excluded_categories = array('dreamcar-news', 'another-category', 'yet-another-category');
foreach ($current_categories as $category) {
if (in_array($category->slug, $excluded_categories)) {
return; // 如果在排除的分类中,不显示小工具
}
}

// 如果不在排除的分类中,显示小工具
echo $args['before_widget'];
// ... 小工具的内容 ...
echo $args['after_widget'];
}

这样,你就可以在 $excluded_categories 数组中列出所有你不想显示这个小工具的分类。

记得在修改后测试一下,确保在各种情况下都能正常工作。如果你需要进一步的帮助或有其他问题,请随时告诉我。