PHP - No consigo hacer esta sentencia lógica dentro de wordpress

   
Vista:

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Javier (6 intervenciones) el 08/04/2015 14:16:20
Hola a todos,


Tengo un archivo php que va colocado arriba a la derecha dentro del blog.

En ese php va la publicidad.

Quiero que según la categoría de la noticia que se muestre me muestre una publicidad diferente.

Para eso se que the_category(', ') me trae la lista de las categorías.

Entonces lo que quiero y no lo consigo es:
Que si dentro de la categoría hay "Pocino" entonces muestras esto...
Que si dentro de la categoría hay "Apicultura" entonces muestras esto...

Supongo que con un swich y dentro todos los case que sean necesarios será posible pero por mas que doy vueltas y vueltas no doy con el código adecuado.



¿alguno me puede ayudar?

Muchas gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Javier (6 intervenciones) el 08/04/2015 16:12:20
Os pongo el código que he usado por si os ayuda:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
		$resultado = strpos(the_category(', '), "Apicultura");
		if($resultado == TRUE){
			echo "dentro de Apicultura";
		}
 
		$resultado = strpos(the_category(', '), "Asociaciones");
		if($resultado == TRUE){
			echo "dentro de Asociaciones";
		}
	?>

Primero: la usar the_category(', ') me las muestra pero no se si las usa como variable.
Segundo: la estructura de if puede estar bien pero me parece un poco chapuza.
Tercero: como podéis ver no controlo casi nada de php.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Alberto (222 intervenciones) el 08/04/2015 18:06:38
Hola...

Pasando tu código a un Switch, quedaría de la siguiente manera...

1
2
3
4
5
6
7
8
9
switch($categoria){
	case 'Apicultura' :
		$resultado = strpos(the_category(', '), "Apicultura");
	break;
	case 'Asociaciones' :
		$resultado = strpos(the_category(', '), "Asociaciones");
	break;
	default : break;
}

Sin embargo, el problema siento que radica mas en lógico que otra cosa, a mi punto de vista deberías tener una variable que almacene las categorías y a esa aplicarle el Switch, en donde dependiendo del caso se aplica el metodo strpos con el valor correspondiente.

Cualquier duda y/o inconveniente, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Javier (6 intervenciones) el 08/04/2015 20:56:34
Si Alberto, creo que eso es lo que falta.

¿y como la creo?.
Porque
1
$categoria = the_category(', ');

no lo hace, desde luego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Alberto (222 intervenciones) el 08/04/2015 21:42:16
Puedes hacer una variable sencilla en donde tu le vas colocando el valor en código duro para hacer tus pruebas, de esa manera simularas los cambios de categoría a través de una variable, ya cuando veas que todo funciona correctamente entonces ya puedes hacer que esa variable sea dinámica.

Te proporciono una página de ayuda del método the_category para que entiendas bien como funciona así como los parámetros que recibe y que significa cada uno de ellos.

https://codex.wordpress.org/Function_Reference/the_category

Cualquier duda y/o comentario aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Javier (6 intervenciones) el 08/04/2015 23:02:00
Bueno, creo que he avanzado pero me sigue sin salir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$category = the_category ();
 
 
//saco el numero de elementos
$longitud = count($category);
 
 
//Recorro todos los elementos
for($i=0; $i<$longitud; $i++)
      {
 
	  echo $category[$i];
 
	  switch($category[$i]){
		case 'Apicultura' :
			 echo "dentro de Apicultura";
		break;
		case 'Asociaciones' :
			 echo "dentro de Asociaciones";
		break;
		default : break;
		}
}
 
 
?>

Con esto me muestra todos los elementos de array que son las categorias del post en concreto. Eso perfecto.

Pero el switch no me responde como espero.

¿que esta mal?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Alberto (222 intervenciones) el 08/04/2015 23:26:17
El echo que tienes antes de realizar el switch, si te imprime correctamente el valor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Javier (6 intervenciones) el 09/04/2015 00:53:19
Si, me sale las etiquetas de la entrada.

Fíjate en la esquina superior derecha que el mi código y en la parte de abajo a la izquierda.

Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Alberto (222 intervenciones) el 09/04/2015 01:02:54
Entiendo...

Entonces lo que haremos sera cambiar el Switch por un else if...

1
2
3
4
5
6
7
8
9
10
11
for($i = 0; $i < $longitud; $i++){
	echo $category[$i];
 
	if($category[$i] == 'Apicultura'){
		echo "dentro de Apicultura";
	} else if ($category[$i] == 'Asociaciones'){
		echo "dentro de Asociaciones";
	} else if ($category[$i] == 'Otro String'){
		echo "Otro String";
	}
}

Esto debería ser mas funcional, nos comentas como te fue. Suerte!

P.D. Cambia el que te puse de ejemplo por un valor correcto, además de agregar los demás else if que son necesarios para tu aplicación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Javier (6 intervenciones) el 10/04/2015 12:26:31
No, lo estoy haciendo mal.

Lo que me muestra en pantalla es
1
[$category = the_category ();
Pero si pongo var_dump ($category); me da como resultado NULL 0.

O sea creo que no me coge las categorías como variable. Y si este paso esta mal el resto también.


Uff, ya no se que hacer, que cosa mas complicada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto

No consigo hacer esta sentencia lógica dentro de wordpress

Publicado por Alberto (222 intervenciones) el 10/04/2015 17:53:34
Hola...

En ese caso, posiblemente el método the_category() no sea la solución.

Mira, te proporciono un link el cual puede asesorarte un poco.

https://codex.wordpress.org/es:Category_Templates

Supongo que al final de cuentas es buscar el método correcto.

Cualquier duda y/o comentario, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar