получить идентификатор или порядок первого виджета на боковой панели WordPress

Я использую Вордпресс. В бэкэнде моего сайта есть одна боковая панель. На этой боковой панели есть n виджетов. Я хотел бы добавить класс CSS только в первый виджет, а не в остальные.

Как я могу справиться с этим?

Пожалуйста помоги!


person Mamadou    schedule 16.12.2010    source источник
comment
может ли кто-нибудь помочь в этом stackoverflow.com/questions/12649799/   -  person daily-learner    schedule 29.09.2012


Ответы (3)


Вы должны сделать динамическую боковую панель, которая будет добавлять нумерацию к классам или идентификаторам виджетов. Вот хороший пост об этом: http://wordpress.org/support/topic/how-to-first-and-last-css-classes-for-sidebar-widgets

person Ivan Ivanić    schedule 16.12.2010

что именно вы хотите изменить? вы можете поместить html в виджеты, чтобы вы могли копировать содержимое вашего виджета, если это что-то простое - вы также можете поместить ID-ы и классы в html (и отредактировать css в файле style.css вашей темы), или вы можете даже используйте css напрямую с опцией тега style="". если это не что-то простое, то у него уже есть идентификаторы и/или классы, поэтому вы должны получить эти идентификаторы и классы с помощью firebug, а затем отредактируйте стиль в style.css.

person tkit    schedule 16.12.2010
comment
Хорошо, иногда пользователь может изменить порядок виджетов. Первые становятся последними, а вторые первыми.... например. Я хочу иметь класс CSS в первом виджете (вверху). Когда он станет вторым, класс css будет применен к новому в топе. - person Mamadou; 16.12.2010

У меня не было большого опыта работы с хуками виджетов в WordPress, но я считаю, что это должно охватывать то, что вы просите.

<?php
if( !is_admin() ) {
    $sidebar_id = 'your-sidebar-id-here';
    $sidebars_array = wp_get_sidebars_widgets();
    if( isset( $sidebars_array[$sidebar_id] ) && ( !empty( $sidebars_array[$sidebar_id] ) ) ) {
        $first_widget = current( $sidebars_array[$sidebar_id] );
        add_action( 'widgets_init', 'so4461485_widget_custom', 10000 );
    }
}

function so4461485_widget_custom() {
    global $wp_registered_widgets, $first_widget;

    if( empty( $wp_registered_widgets ) )
        return;

    foreach( $wp_registered_widgets as $widget_id => $widget_data_array ) {
        if( $widget_id != $first_widget )
            continue;
        if( isset( $widget_data_array['classname'] ) )
            $wp_registered_widgets[$widget_id]['classname'] .= ' first_widget';
    }
}
?>

Вам просто нужно заменить your-sidebar-id-here (строка 3 кода) действительным идентификатором боковой панели (то есть идентификатором, установленным при регистрации боковой панели).

Код можно поместить в файл functions.php темы для удобства. Если у вас возникли проблемы с размещением кода, просто убедитесь, что вы не вкладываете теги PHP (например, <?php <?php ).

EDIT: Принятый ответ, вероятно, фактически касается вопроса, поэтому следуйте этому совету.

Надеюсь, это поможет...

person t31os    schedule 19.12.2010