Skip Navigation

[Resolved] Aparecer una vista según día de la semana

This support ticket is created 6 years, 6 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 -
- 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 -

Supporter timezone: Europe/London (GMT+00:00)

This topic contains 3 replies, has 2 voices.

Last updated by Nigel 6 years, 6 months ago.

Assisted by: Nigel.

Author
Posts
#916553

Hola Nigel, como podría hacer esta función: en la pagina principal de la web quiero que aparezca el menu del día,
He creado un tipo de entrada menu y en uno de los campos de texto habra el día de las semana en cuestión. como podría hacer para que dependiendo del día de la semana aparezca un menu o otro.
Saludos.
Rafa Corts

#916624

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

Hola Rafa

Tendrás que añadir un filtro al View para este campo y luego modificar este filtro con código que utilice wpv_filter_query.

Primero en el filtro elige un valor fijo (p.j. "lunes"), para que el View se muestra únicamente el menú de lunes.

Entonces puedes usar código así para modificar el texto "lunes" al día actual:

function tssupp_day_filter( $view_args, $view_settings, $view_id ){

	if ( 166 == $view_id ) { // Editar

		$today = date( 'l' );

		if ( isset( $view_args['meta_query'] ) ) {
			$view_args['meta_query'][0]['value'] = $today;
		}
	}

	return $view_args;
}
add_filter( 'wpv_filter_query', 'tssupp_day_filter', 101, 3);

Tendrás que asegurar que el texto del campo corresponde al texto que sale del PHP función date: hidden link

#917346

Hola Nigel, ya he creado la vista con el filtro lunes y solo aparece el menu lunes hasta aquí correcto. Ahora estoy intentando integrar la funcction que me has pasado, pero no me acaba de funcionar. En la lniea de codigo

if ( 166 == $view_id ) { // Editar 

entiendo que he de substituir el numero 166 por el ID de la vista

 if ( 1602 == $view_id ) { // Editar  

y borrar el filtro de la vista para que solo filtre a través de la funcction. ¿Es correcto?
A mi no me llega a funcionar me dice que no encuentra ninguna vista.
Saludos.
Rafa Corts

#917356

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

Hola Rafa

No, tienes que dejar el filtro original para que el código lo tiene para modificar.

Pero, puede ser mejor cambiar el código para usar strftime en lugar de date para asegurarse que usa nombres de los días español, así:

function tssupp_day_filter( $view_args, $view_settings, $view_id ){
 
    if ( 1602 == $view_id ) { // Editar
 
		$current_locale = setlocale( LC_TIME, 0 );
		setlocale( LC_TIME, es_ES );
		$today = strftime('%A');
		setlocale( LC_TIME, $current_locale );

        if ( isset( $view_args['meta_query'] ) ) {
            $view_args['meta_query'][0]['value'] = $today;
        }
    }
 
    return $view_args;
}
add_filter( 'wpv_filter_query', 'tssupp_day_filter', 101, 3);

El campo necesita valores "lunes", "martes" etc.