Добавить класс к последнему виджету в области виджетов - PullRequest
1 голос
/ 04 июля 2011

Я использую следующий 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; ?>

В основном каждый виджет в <ul> выступает в качестве элемента списка.Я хочу иметь возможность добавить класс к последнему элементу списка в списке.

Могу ли я сделать это с WordPress / PHP?

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Завершено с использованием этой функции.

http://wordpress.org/support/topic/how-to-first-and-last-css-classes-for-sidebar-widgets?replies=1

1 голос
/ 04 июля 2011

Я однажды закодировал, что WordPress добавляет первое и последнее имя класса к первому и последнему виджету, вы можете найти код в билет .

Однако для CSS вы должны иметь возможность обратиться к последнему элементу, используя :last-child CSS-селектор (все браузеры, кроме IE 5.5 - IE 8). Так что, вероятно, это уже решает вашу проблему.

ul > li:last-child {border:1em solid red;}
0 голосов
/ 17 марта 2015

Если вы хотите добавить пользовательский класс для первой или последней внутренней боковой панели виджета.

Вы можете с помощью ловушки действий "init"

  • получить все активируемые виджеты, боковые панели
  • перебрать каждый виджет и изменить имена классов
add_action('init', 'ak_add_order_classes_for_widgets' );

function ak_add_order_classes_for_widgets() { 
    global $wp_registered_sidebars, $wp_registered_widgets;

    #Grab the widgets
    $sidebars = wp_get_sidebars_widgets();

    if ( empty( $sidebars ) ) {
        return;
    }

    #Loop through each widget and change the class names
    foreach ( $sidebars as $sidebar_id => $widgets ) {
        if ( empty( $widgets ) ) {
            continue;
        }

        $number_of_widgets = count( $widgets );

        foreach ( $widgets as $i => $widget_id ) {
            $wp_registered_widgets[$widget_id]['classname'] .= ' ct-widget-order-' . $i;

            # Add first widget class
            if ( 0 == $i ) {
                $wp_registered_widgets[$widget_id]['classname'] .= ' ct-widget-first';
            }

            # Add last widget class
            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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...