Cómo resaltar la página actual en el menú de navegación de WordPress

Cómo diseñar widgets según su posición en un área de widgets

Ultima actualización en por Debjit Saha

Extractos de IsItWP

¿Está buscando una forma de crear widgets dinámicos en WordPress? Si bien es probable que haya un complemento para esto, hemos creado un fragmento de código rápido que puede usar para agregar widgets con estilo según su posición en un área de widgets en WordPress.

Instrucciones:

Todo lo que necesita hacer es agregar este código al archivo functions.php de su tema o en un complemento específico del sitio:



function widget_position_style_dynamic_sidebar_params( $params ) {
	if( is_admin() )
		return $params;

	$widgets = wp_get_sidebars_widgets();
	$area = $params[0]['id'];
	$order = array_search( $params[0]['widget_id'], $widgets[$area] ) + 1;
	$params[0]['before_widget'] = '<div class="widget-'. ordinal( $order ) .'">' . $params[0]['before_widget'];
	$params[0]['after_widget'] .= '</div>';
	return $params;
}
add_filter( 'dynamic_sidebar_params', 'widget_position_style_dynamic_sidebar_params' );

function ordinal( $num ) {
	// Special case "teenth"
	if ( ($num / 10) % 10 != 1 ) {
		// Handle 1st, 2nd, 3rd
		switch( $num % 10 ) {
			case 1: return $num . 'st';
			case 2: return $num . 'nd';
			case 3: return $num . 'rd';
		}
	}
	// Everything else is "nth"
	return $num . 'th';
}


Este código agregará un div contenedor alrededor de sus widgets y les aplicará los nombres de clase “widget-1st”, “widget-2nd”. Ahora puede apuntar a este widget en su CSS: #mysidebar .widget-1st { background: red }.

Notar: Si es la primera vez que agrega fragmentos en WordPress, consulte nuestra guía sobre cómo agregar fragmentos correctamente en WordPress, para que no rompa accidentalmente su sitio.

Si le gustó este fragmento de código, consulte nuestros otros artículos en el sitio, como: Los 10 mejores complementos de WordPress para desarrolladores web y Cómo guardar datos de formularios parciales en WordPress.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba