Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Condicionante según la categoría en el functions.php

Estas en el tema de Condicionante según la categoría en el functions.php en el foro de WordPress en Foros del Web. Buenas tardes, Actualmente en el functions.php tengo el siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original function featuredtoRSS ( $content ) { global $post ; ...
  #1 (permalink)  
Antiguo 06/10/2015, 15:23
Avatar de franciscomarin  
Fecha de Ingreso: junio-2009
Ubicación: Terrassa, BCN, CAT
Mensajes: 2.414
Antigüedad: 15 años, 4 meses
Puntos: 327
Condicionante según la categoría en el functions.php

Buenas tardes,

Actualmente en el functions.php tengo el siguiente código:
Código PHP:
Ver original
  1. function featuredtoRSS($content) {
  2. global $post;
  3. if ( has_post_thumbnail( $post->ID ) ){
  4. $content = '' . get_the_post_thumbnail( $post->ID, 'full', array( 'style' => 'float:left; margin:0px 15px 15px 0px;' ) ) . '' . $content;
  5. }
  6. return $content;
  7. }

Gracias a él muestro la imagen destacada en el feed, en tamaño full.

Pero lo que necesito es modificar este código según la categoría. De tal modo que si es la categoría X muestre la imagen en tamaño miniatura, si es la Y muestre en tamaño mediano y para el resto no muestre ninguna. Un condicionante que realice este código según la categoría, pero no sé como hacerlo.

Llevo varios días dándole vueltas a esto sin resultados. ¿Alguna idea?

Muchas gracias. :)
  #2 (permalink)  
Antiguo 06/10/2015, 15:26
Avatar de franciscomarin  
Fecha de Ingreso: junio-2009
Ubicación: Terrassa, BCN, CAT
Mensajes: 2.414
Antigüedad: 15 años, 4 meses
Puntos: 327
Respuesta: Condicionante según la categoría en el functions.php

Se me olvidó añadir que siempre me refiero al feed de la categoría (/category/NOMBRE/feed/), nunca al feed general.
  #3 (permalink)  
Antiguo 07/10/2015, 07:40
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Condicionante según la categoría en el functions.php

Hola ¿Esa función la aplicas directamente en el loop o la pasas por add_filter?
  #4 (permalink)  
Antiguo 07/10/2015, 07:44
Avatar de franciscomarin  
Fecha de Ingreso: junio-2009
Ubicación: Terrassa, BCN, CAT
Mensajes: 2.414
Antigüedad: 15 años, 4 meses
Puntos: 327
Respuesta: Condicionante según la categoría en el functions.php

La aplico directamente.
  #5 (permalink)  
Antiguo 07/10/2015, 09:58
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Condicionante según la categoría en el functions.php

Intenta así:

Código PHP:
Ver original
  1. function featuredtoRSS( $content ) {
  2.     global $post;
  3.  
  4.     // IDs de tus categorías
  5.     $mini = array( 4 , 12 , 23 );
  6.     $medio = array( 3 , 10 );
  7.  
  8.     // Un pequeño operador ternario que asigna los tamaños y deja por fuera
  9.     // a las entradas que no pertenezcan a las categorías
  10.  
  11.     $cat = in_category( $mini ) ? 'thumbnail' : ( in_category( $medio ) ? 'medium' : null );
  12.  
  13.     if ( ( has_post_thumbnail( $post->ID ) ) and ( true == $cat ) ) {
  14.         $content = '' . get_the_post_thumbnail( $post->ID, $cat , array( 'style' => 'float:left; margin:0px 15px 15px 0px;' ) ) . '' . $content;
  15.  
  16. return $content;
  17. }
De paso te digo que tu función está hecha para pasarla por un filtro. Un parámetro $content que de paso retorna $content debería devolver nulo si lo aplicas directamente porque no hay nada que explique qué cosa es $content. Revisa bien, es seguro que exista un add_filter por ahí.
  #6 (permalink)  
Antiguo 07/10/2015, 13:39
Avatar de franciscomarin  
Fecha de Ingreso: junio-2009
Ubicación: Terrassa, BCN, CAT
Mensajes: 2.414
Antigüedad: 15 años, 4 meses
Puntos: 327
Respuesta: Condicionante según la categoría en el functions.php

Tienes razón, me comí parte del código que puse. Este es el bueno:

Código PHP:
Ver original
  1. function featuredtoRSS($content) {
  2. global $post;
  3. if ( has_post_thumbnail( $post->ID ) ){
  4. $content = '' . get_the_post_thumbnail( $post->ID, 'full', array( 'style' => 'float:left; margin:0px 15px 15px 0px;' ) ) . '' . $content;
  5. }
  6. return $content;
  7. }
  8.  
  9. add_filter('the_excerpt_rss', 'featuredtoRSS');
  10. add_filter('the_content_feed', 'featuredtoRSS');

Voy a probar tu código y te digo algo.

Última edición por franciscomarin; 07/10/2015 a las 13:45
  #7 (permalink)  
Antiguo 07/10/2015, 14:08
Avatar de franciscomarin  
Fecha de Ingreso: junio-2009
Ubicación: Terrassa, BCN, CAT
Mensajes: 2.414
Antigüedad: 15 años, 4 meses
Puntos: 327
Respuesta: Condicionante según la categoría en el functions.php

He probado con tu código (por cierto, te faltó un cierre). Y no lo he conseguido:

Código PHP:
Ver original
  1. function featuredtoRSS( $content ) {
  2.     global $post;
  3.  
  4.     // IDs de tus categorías
  5.     $mini = array( 199 );
  6.     $medio = array( 200 );
  7.  
  8.     // Un pequeño operador ternario que asigna los tamaños y deja por fuera
  9.     // a las entradas que no pertenezcan a las categorías
  10.  
  11.     $cat = in_category( $mini ) ? 'medium' : ( in_category( $medio ) ? 'full' : null );
  12.  
  13.     if ( ( has_post_thumbnail( $post->ID ) ) and ( true == $cat ) ) {
  14.         $content = '' . get_the_post_thumbnail( $post->ID, $cat , array( 'style' => 'float:left; margin:0px 15px 15px 0px;' ) ) . '' . $content;
  15. }
  16.  
  17. return $content;
  18. }
  19.  
  20. add_filter('the_excerpt_rss', 'featuredtoRSS');
  21. add_filter('the_content_feed', 'featuredtoRSS');

Cuando pongo un ID de una categoría que no existe, no se muestra la imagen pero cuando pongo el ID de una categoría que existe, se muestra en todos los feeds sin hacer ninguna distinción.
  #8 (permalink)  
Antiguo 07/10/2015, 14:40
Avatar de franciscomarin  
Fecha de Ingreso: junio-2009
Ubicación: Terrassa, BCN, CAT
Mensajes: 2.414
Antigüedad: 15 años, 4 meses
Puntos: 327
Respuesta: Condicionante según la categoría en el functions.php

Vale, acabo de descubrir el problema,

El código funciona correctamente, el problema que tengo es que las entradas siempre comparten (o casi siempre) esas dos categorías por lo que utiliza siempre la primera.

Necesitaría algo así pero que el código separe por el feed de la categoría, no por la categoría donde está cada entrada.
  #9 (permalink)  
Antiguo 07/10/2015, 17:28
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Condicionante según la categoría en el functions.php

Cita:
Iniciado por franciscomarin Ver Mensaje
El código funciona correctamente, el problema que tengo es que las entradas siempre comparten (o casi siempre) esas dos categorías por lo que utiliza siempre la primera.
No estoy seguro de haber entendido bien esto último, pero es posible que para completar la tarea quieras modificar el query con el que te traes las entradas. Inténtalo con el parámetro post__in (así con dos guiones), y post__not_in en caso de que desees excluir categorías.

https://codex.wordpress.org/Class_Re...age_Parameters
  #10 (permalink)  
Antiguo 07/10/2015, 22:23
Avatar de franciscomarin  
Fecha de Ingreso: junio-2009
Ubicación: Terrassa, BCN, CAT
Mensajes: 2.414
Antigüedad: 15 años, 4 meses
Puntos: 327
Respuesta: Condicionante según la categoría en el functions.php

Me explico: Las entradas comparten categoria, en ambos feeds se muestran las mismas entradas. Solo que necesito que en un feed se muestre con la imagen en x tamaño y en el otro en tamaño y, pero siempre es la misma entrada.
  #11 (permalink)  
Antiguo 08/10/2015, 08:06
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 4 meses
Puntos: 429
Respuesta: Condicionante según la categoría en el functions.php

No sé si podría funcionar algo parecido a esto, indicando el tamaño, por ej. "thumbnail" para unas y "medium" para otras

Código PHP:
Ver original
  1. // mostrar miniatura en los feeds
  2. function mostrar_post_thumbnail_feeds($content) {
  3.     global $post;
  4.  
  5. if ( in_category( '1' )) {
  6.  
  7.     if(has_post_thumbnail($post->ID)) {
  8.         $content = '<div>' . get_the_post_thumbnail($post->ID, thumbnail) . '</div>' . $content;
  9.  
  10.     } elseif ( in_category('2') ) {
  11.  
  12.     if(has_post_thumbnail($post->ID)) {
  13.         $content = '<div>' . get_the_post_thumbnail($post->ID, medium) . '</div>' . $content;
  14.     }
  15.  
  16.     return $content;
  17.  
  18. }
  19. add_filter('the_excerpt_rss', 'mostrar_post_thumbnail_feeds');
  20. add_filter('the_content_feed', 'mostrar_post_thumbnail_feeds');
__________________
Mi blog personal | Mi G+

Etiquetas: php, post, según
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:18.