【问题标题】:Add class to last widget in widget area将类添加到小部件区域中的最后一个小部件
【发布时间】:2011-09-27 23:47:31
【问题描述】:

我正在使用以下 PHP 在我的 Wordpress 主题中显示一些小部件:

<?php
// A sidebar for widgets, just because.
if ( is_active_sidebar( 'primary-widget-area' ) ) : ?>
    <ul>
        <?php dynamic_sidebar( 'primary-widget-area' ); ?>
    </ul>
<?php endif; ?>

基本上&lt;ul&gt; 中的每个小部件都作为一个列表项出现。我希望能够将一个类添加到列表中的最后一个列表项。

我可以用 wordpress/php 做到这一点吗?

【问题讨论】:

  • 出于 CSS 原因你需要那个吗?
  • 哈哈哈,他当然因为 CSS 的原因需要它!

标签: php css wordpress class widget


【解决方案1】:
【解决方案2】:

我曾经编写过 wordpress 在第一个和最后一个小部件中添加第一个和最后一个类名的代码,您可以在 the ticket 中找到 the code

但是,根据 CSS,您应该能够使用 :last-child CSS selector 来处理最后一项(所有浏览器,但不包括 IE 5.5 - IE 8)。所以这可能已经解决了你的问题。

ul > li:last-child {border:1em solid red;}

【讨论】:

【解决方案3】:

如果您想为第一个或最后一个小部件内部侧边栏添加自定义类。

你可以使用动作钩子“init”

  • 获取所有激活小部件、侧边栏
  • 循环遍历每个小部件并更改类名
add_action('init', 'ak_add_order_classes_for_widgets' ); 功能 ak_add_order_classes_for_widgets() { 全局 $wp_registered_sidebars,$wp_registered_widgets; #抓取小部件 $sidebars = wp_get_sidebars_widgets(); 如果(空($sidebars)){ 返回; } #循环遍历每个小部件并更改类名 foreach ( $sidebars as $sidebar_id => $widgets ) { 如果(空($widgets)){ 继续; } $number_of_widgets = count($widgets); foreach ( $widgets as $i => $widget_id ) { $wp_registered_widgets[$widget_id]['classname'] .= ' ct-widget-order-' 。 $i; # 添加第一个小部件类 如果 ( 0 == $i ) { $wp_registered_widgets[$widget_id]['classname'] .= 'ct-widget-first'; } # 添加最后一个小部件类 if ( $number_of_widgets == ( $i + 1 ) ) { $wp_registered_widgets[$widget_id]['classname'] .= 'ct-widget-last'; } } } }

我的博客:http://colourstheme.com/2015/03/add-class-to-first-and-last-widget/

【讨论】:

  • 您应该直接在答案中包含该链接后面的代码。
  • 感谢您的建议:D
猜你喜欢
  • 2012-12-16
  • 1970-01-01
  • 2015-07-17
  • 2015-03-20
  • 2012-08-05
  • 2019-10-19
  • 2021-03-01
  • 2020-09-22
  • 1970-01-01
相关资源
最近更新 更多