Mostrar anuncios según palabras claves en la URL

  • Autor Autor MIG400
  • Fecha de inicio Fecha de inicio
MIG400

MIG400

Zeta
Redactor
Verificación en dos pasos activada
Verificado por Whatsapp
Buenas gente, estoy necesitando mostrar ciertos anuncios según se encuentre o no determinadas palabras claves en la URL.

Trabajo con Wordpress y quisiera que la condición vaya directamente en la plantilla.

Por ejemplo: en Single.php (Single Post), actualmente tengo un anuncio de Adsense. Para evitar problemas, quiero que no se muestren sí la URL tiene la palabra "online".

Esto necesito hacerlo evaluando la URL y no el título del post.

Creo que es algo simple pero no se bien trabajar con cadenas de texto, ni en que variable encontrar la URL. Espero ser claro con lo que necesito.

Sí alguien me puede dar una orientación mínima le estaría muy agradecido 😛7:
 
[MENTION=35299]MIG400[/MENTION] puedes hacerlo asi
PHP:
<?php
if ( !strstr($post->post_name, 'online') ) :
?>

Aqui tu ad code

<?php
endif;
?>
 
[MENTION=35299]MIG400[/MENTION] puedes hacerlo asi
PHP:
<?php
if ( !strstr($post->post_name, 'online') ) :
?>

Aqui tu ad code

<?php
endif;
?>

Hola, mil gracias por responder!.

Tengo algunas dudas:

1- Eso toma el título del post?
2- Sí es así, ¿no se puede hacer con la URL?
3- Como podría concatenar varias palabras con una condición OR estilo "Online" or "vivo" or "streaming", etc


:encouragement:
 
Hola, mil gracias por responder!.

Tengo algunas dudas:

1- Eso toma el título del post?
2- Sí es así, ¿no se puede hacer con la URL?
3- Como podría concatenar varias palabras con una condición OR estilo "Online" or "vivo" or "streaming", etc


:encouragement:

1- post_name es lo que usa para la url (el titulo es post_title)
2- respondido en la 1
3- podrias usar switch PHP: switch - Manual
 
[MENTION=35299]MIG400[/MENTION]

Use el slug y no el titulo del post

y si quieres agregar mas palabras puedes hacerlo asi

PHP:
<?php
if ( !preg_match('/(online|vivo|streaming)/', $post->post_name) ) :
?>

Aqui tu ad code

<?php
endif;
?>
 
1- post_name es lo que usa para la url (el titulo es post_title)
2- respondido en la 1
3- podrias usar switch PHP: switch - Manual

Bien!, veo que es como el "Select case" de Visual Basic.

Una cosa, yo necesito que sí el dominio tiene "/category/" y la palabra "online" simultáneamente. por ejemplo: "midominio.com/category/canciones-online/" NO muestre el anuncio.

Insertar CODE, HTML o PHP:
<?php $flag++; ?> /* Bandera, igual a 1 para mostrar anuncios, igual a 2 para NO mostrarlos */

<?php
if ( !strstr($post->post_name, 'online') ) : /* Consulto sí existe  "/category/" */
?>

 <?php
 switch !strstr($post->post_name): /* Está bien expresado el Switch? */
     case "online":
         <?php $flag++; ?>
         break;
     case "streaming":
         <?php $flag++; ?>
         break;
     case "vivo":
         <?php $flag++; ?>
         break;
 endswitch;
 ?>

<?php
endif; /* Cierro el if que engloba el switch y que me permite saber sí existe se encuentra en la carpeta "/Category/"*/
?>

  <?php if ($flag == 1) : ?> /* Sí llego aquí la bandera valiendo 1 es que no encontró ninguna de las keys prohibidas */
MUESTRO LOS ANUNCIOS
  <?php endif; ?>

Está bien la condición?
Insertar CODE, HTML o PHP:
switch !strstr($post->post_name):
Tengo dudas sí lo escribí bien.

Aclaro que en el IF podría consultar por cualquier carpeta, no solo "/category/", es un ejemplo. Sí hay algo que no se entiende díganme.

- - - Actualizado - - -

[MENTION=35299]MIG400[/MENTION]

Use el slug y no el titulo del post

y si quieres agregar mas palabras puedes hacerlo asi

PHP:
<?php
if ( !preg_match('/(online|vivo|streaming)/', $post->post_name) ) :
?>

Aqui tu ad code

<?php
endif;
?>

Ah muchas gracias, recién leo tu ampliación. Creo que con eso me ahorro el Switch, ¿verdad?. Igualmente voy a probar implementar ambos, pero mañana que ahora seguro meto la pata.
 
Bien!, veo que es como el "Select case" de Visual Basic.

Una cosa, yo necesito que sí el dominio tiene "/category/" y la palabra "online" simultáneamente. por ejemplo: "midominio.com/category/canciones-online/" NO muestre el anuncio.

Insertar CODE, HTML o PHP:
<?php $flag++; ?> /* Bandera, igual a 1 para mostrar anuncios, igual a 2 para NO mostrarlos */

<?php
if ( !strstr($post->post_name, 'online') ) : /* Consulto sí existe  "/category/" */
?>

 <?php
 switch (!strstr($post->post_name)): /* Está bien expresado el Switch? */
     case "online":
         <?php $flag++; ?>
         break;
     case "streaming":
         <?php $flag++; ?>
         break;
     case "vivo":
         <?php $flag++; ?>
         break;
 endswitch;
 ?>

<?php
endif; /* Cierro el if que engloba el switch y que me permite saber sí existe se encuentra en la carpeta "/Category/"*/
?>

  <?php if ($flag == 1) : ?> /* Sí llego aquí la bandera valiendo 1 es que no encontró ninguna de las keys prohibidas */
MUESTRO LOS ANUNCIOS
  <?php endif; ?>

Está bien la condición?
Insertar CODE, HTML o PHP:
switch !strstr($post->post_name):
Tengo dudas sí lo escribí bien.

Aclaro que en el IF podría consultar por cualquier carpeta, no solo "/category/", es un ejemplo. Sí hay algo que no se entiende díganme.

1- switch (!strstr($post->post_name))
2- para detectar la categoria, puedes usar: is_category() (https://codex.wordpress.org/Function_Reference/is_category)
3- ten en cuenta que $post->post_name es para post (en tu caso single.php)... si quieres ver si el nombre de la categoria tiene la palabra online es con: https://codex.wordpress.org/Function_Reference/get_category
 
1- switch (!strstr($post->post_name))
2- para detectar la categoria, puedes usar: is_category() (https://codex.wordpress.org/Function_Reference/is_category)
3- ten en cuenta que $post->post_name es para post (en tu caso single.php)... si quieres ver si el nombre de la categoria tiene la palabra online es con: https://codex.wordpress.org/Function_Reference/get_category

Necesito que evalue cualquier carpeta que venga después del ".com/", no solo categorías. Perdón, di ese ejemplo pensando que la solución iba a ser universal.

Este código lo necesito poner en el Main index template. Hay forma de leer la URL desde allí?
 
Necesito que evalue cualquier carpeta que venga después del ".com/", no solo categorías. Perdón, di ese ejemplo pensando que la solución iba a ser universal.

Este código lo necesito poner en el Main index template. Hay forma de leer la URL desde allí?

Para que te funcione en cualquier lugar... usa $_SERVER['REQUEST_URI'] eso te da la url. entonces comparas contra esa url a ver si tiene palabras claves que no quieras usar y demas...
Si quieres un code mas personalizado: Get the full URL in PHP - Stack Overflow
 
Para que te funcione en cualquier lugar... usa $_SERVER['REQUEST_URI'] eso te da la url. entonces comparas contra esa url a ver si tiene palabras claves que no quieras usar y demas...
Si quieres un code mas personalizado: Get the full URL in PHP - Stack Overflow

Bárbaro, voy a consultar por $_SERVER['REQUEST_URI'] siempre entonces. Mañana pruebo y les cuento como me fue. :encouragement:

- - - Actualizado - - -

Bueno, actualizo:

Me funcionó muy bien el $_SERVER['REQUEST_URI'], [MENTION=9679]cicklow[/MENTION] veo que no trae la parte "midominio.com", solo lo que viene luego. No importa, porque es justo la parte que me hace falta.

En lugar de usar "strstr" como me había propuesto [MENTION=36180]hugo1[/MENTION] me decanté por "strpos" solo porque leí por ahí que consume menos memoria.

Ya lo tengo casi listo, solo estoy refinando un poco el código.

¿Podría armar una función a la que le pase como parámetros las palabras "prohibidas" y me devuelva true o false sí las encontró?

Sí alguno tiene un enlace donde expliquen como crearlas(las funciones) e implementarlas en Wordpress me vendría bien ya que no tengo idea. No se si van en un archivo aparte, tipos de argumentos que hay (opcionales u obligatorios), etc.

Mil gracias a los dos, no lo hubiera podido hacer sin ustedes.
 
Bárbaro, voy a consultar por $_SERVER['REQUEST_URI'] siempre entonces. Mañana pruebo y les cuento como me fue. :encouragement:

- - - Actualizado - - -

Bueno, actualizo:

Me funcionó muy bien el $_SERVER['REQUEST_URI'], [MENTION=9679]cicklow[/MENTION] veo que no trae la parte "midominio.com", solo lo que viene luego. No importa, porque es justo la parte que me hace falta.

En lugar de usar "strstr" como me había propuesto [MENTION=36180]hugo1[/MENTION] me decanté por "strpos" solo porque leí por ahí que consume menos memoria.

Ya lo tengo casi listo, solo estoy refinando un poco el código.

¿Podría armar una función a la que le pase como parámetros las palabras "prohibidas" y me devuelva true o false sí las encontró?

Sí alguno tiene un enlace donde expliquen como crearlas(las funciones) e implementarlas en Wordpress me vendría bien ya que no tengo idea. No se si van en un archivo aparte, tipos de argumentos que hay (opcionales u obligatorios), etc.

Mil gracias a los dos, no lo hubiera podido hacer sin ustedes.

si te fijas en el link que te di, tenes como obtener TODA la url completa...
 
si te fijas en el link que te di, tenes como obtener TODA la url completa...

Sí gracias igual, como te decía antes, la parte que trae es la que necesito.

Sí quisiera usarla, la función a la cual haces referencia, se escribe en el mismo archivo PHP donde estoy trabajando?.
 
Sí gracias igual, como te decía antes, la parte que trae es la que necesito.

Sí quisiera usarla, la función a la cual haces referencia, se escribe en el mismo archivo PHP donde estoy trabajando?.

sisi. tnes varios ejemplos, puedes colocar la funcion en functions.php y acceder a ella desde todo el theme o en donde la quieres usar
 
sisi. tnes varios ejemplos, puedes colocar la funcion en functions.php y acceder a ella desde todo el theme o en donde la quieres usar

Bárbaro, ya lo tengo funcionando al code, luego intentaré crear una función. :encouragement:
 
Atrás
Arriba