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

Ocultar contenidos según usuarios / Wordpress

Estas en el tema de Ocultar contenidos según usuarios / Wordpress en el foro de WordPress en Foros del Web. En primer lugar felicitaros por el trabajo que realizaís. No suelo publicar preguntas, porque antes de hacerlo busco por los foros y siempre encuentro a ...
  #1 (permalink)  
Antiguo 03/01/2012, 15:01
 
Fecha de Ingreso: diciembre-2011
Mensajes: 4
Antigüedad: 13 años
Puntos: 0
Ocultar contenidos según usuarios / Wordpress

En primer lugar felicitaros por el trabajo que realizaís. No suelo publicar preguntas, porque antes de hacerlo busco por los foros y siempre encuentro a alguien que preguntó antes que yo. Pero en este tema, me he dado con un muro.

Quería hacer una consulta sobre ocultar contenidos a los usuarios según estén registrados o no. En principio he visto muchas respuestas al respecto con código que funcionan perfectamente. Se añade una función para el miembro y otra función para el visitante y de esta manera he conseguido mostrar unos textos a unos y otros distintos a los otros. Después de añadir las funciones al function.php, toca añadir los contenidos mediante shortcodes, lo cual he visto funcionar en páginas y post.

Sin embargo mi duda surge para otros apartados del blog. Por ejemplo, si lo que quiero mostrar/ocultar es un texto de un widget del sidebar (por ejemplo uno de añadir texto o HTML) o bien si lo quiero insertar en algún punto de los archivos .php del teme, como el header.php o el footer.php. Es decir, que en los widget y en el código fuente PHP, los shortcodes no me funcionan. Como podría hacer para insertar estos contenidos duplicados en esas zonas?

Estos son los códigos que utilizo:

add_shortcode( 'miembro', 'shortcode_para_miembros' );

function shortcode_para_miembros( $atts, $content = null ) {
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
return $content;
return '';
}

////////////////


[miembro]
Contenido que solo ven los usuarios registrados/conectados.
[/miembro]


Muchas gracias!!!
  #2 (permalink)  
Antiguo 06/01/2012, 03:04
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 5 meses
Puntos: 429
Respuesta: Ocultar contenidos según usuarios / Wordpress

Hola, he visto que has hecho la misma consulta en otro foro y ya te he contestado.

Te comento que el envío cruzado o crossposting, se considera una falta de respeto y un menosprecio hacia una mínima netiqueta. Por lo que te ruego que cuando obtengas la solución en alguno de los foros lo comuniques en el resto y postees la solución con el objeto de no abusar del tiempo y el esfuerzo de los demás.
__________________
Mi blog personal | Mi G+
  #3 (permalink)  
Antiguo 09/01/2012, 09:56
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 4 meses
Puntos: 638
Respuesta: Ocultar contenidos según usuarios / Wordpress

Tendrías que hacer básicamente lo mismo, creas la función en tu archivo functions.php y luego la colocas donde desees que se muestre o no ese contenido:
Código PHP:
Ver original
  1. function contenido_para_miembros( $atts, $content = null ) {
  2. if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
  3. return $content;
  4. return '';
  5. }
Por ejemplo, si quieres se muestre en el archivo sidebar.php, lo haces así:
Código PHP:
Ver original
  1. <?php echo contenido_para_miembros(); ?>

Saludos...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 24/02/2012, 09:32
 
Fecha de Ingreso: diciembre-2011
Mensajes: 4
Antigüedad: 13 años
Puntos: 0
Respuesta: Ocultar contenidos según usuarios / Wordpress

Lo cierto es que al final no había buscado también como yo pensaba... Buscando en los temas similares, he conseguido dar con la solución a todo lo que buscaba... Listo aquí los pasos, por si a alguien más le puede servir.

Empezaré explicando la situación. En un blog que contiene publicidad, queríamos "esconder" esta publicidad a requerimiento del usuario al estilo Microsiervos . Sin embargo, el problema que nos encontramos es que en el blog se muestran banners de publicidad de 4 maneras diferentes, por lo tanto, ninguna solución parecía servirnos, dado el uso diferente que hace Wordpress del código, de los shortcodes y de las zonas donde los apliques.

Os explico como resolvimos cada apartado.

- Publicidad en páginas.

Cuando el banner está insertado mediante código HTML en el cuerpo de una página, la manera de ocultar/mostrar es sencilla mediante una modificación en functions.php:

add_shortcode( 'visitante', 'shortcode_para_visitantes' );

function shortcode_para_visitantes( $atts, $content = null ) {
if ( ( !is_user_logged_in() && !is_null( $content ) ) || is_feed() )
return $content;
return '';
}


add_shortcode( 'miembro', 'shortcode_para_miembros' );

function shortcode_para_miembros( $atts, $content = null ) {
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
return $content;
return '';
}


De esta manera, sólo debemos llamar a las funciones:


[visitante]Lo que ven los no registrados[/visitante]
[miembro]Lo que ven los registrados[/miembro]



- Publicidad en las categorías.

Puede que alguno, quiera segmentar su publicidad mostrando ciertos banners, según la categoría de entradas en la que se encuentre el usuario. Esto es, entre el nombre de la categoría y la primera entrada de la lista (podéis ubicarlo donde queráis).

No hemos encontrado ningún plugin que gestione banners en categorías, de manera más o menos libre (si conocéis alguno decirlo por favor), así que nuevamente hemos introducido los banners de forma manual, pero esta vez directamente en el código de archive.php.

Además de buscar la función correcta para mostrar cada banner en su apartado, debíamos conseguir que la publicidad se mostrase o no, a registrados y no registrados.

Los tags de las funciones que creamos antes, no sirven en php puro, así usamos otro método similar:

<?php if (is_category(51)) { ?>
<?php if ( !($user_ID) ) { ?>
Lo que ven los no registrados
<?php }else{ ?>
Lo que ven los registrados
<?php } ?>
<?php } ?>

El número de categoría debéis cambiarlo por el de cada temática que necesitéis.


- Publicidad en widgets.

Si usáis algún código de Adsense o similar, incluyéndolo en un widget del sidebar, os encontraréis con que los tags de nuestras funciones iniciales, tampoco nos sirven, ya que el editor de texto de los widgets no los interpreta bien. ¿Qué hacer?

Añadir el plugin Widget Shortcodes, que os permite añadirlos (y ser reconocidos) en las áreas de texto de cualquier elemento del sidebar.


- Publicidad rotativa en texto HTML.

Si queréis tener algún plugin de rotación de banners pero queréis alto grado de personalización individual como nosotros, en lugar de un plugin de gestión de banners podéis usar uno de rotación de texto HTML. La inserción sigue siendo manual como en los otros, pero os permitirá personalizar lo que queráis.

De igual modo que en el anterior, los shortcodes ahora si serán reconocidos, por el plugin que comentábamos en el punto anterior.




Mucho lío para gestionar distintas zonas de publicidad y para encima hacerlas "ocultables" a vuestro antojo. Verdad? Así es. Pero no hemos encontrado otro modo. Lo suyo sería un plugin o widget, que te permitiera no sólo insertar banners sino hacerlo en cualquier punto del blog (post, paginas, portada, categorías, búsquedas, sidebar, etc...), pero no encontramos ninguno tan completo que toque todos los palos.

Si hubiera uno, tal vez el método para esconder la publi según el gusto, sería más sencillo, con menos pasos... Iluminarnos, seguro que estamos dando muchas vueltas para algo que es más sencillo. A que sí?

Rizando el rizo, ya además, que el plugin lleve unas estadísticas de clicks de los banners, porque con tantos sistemas distintos, ponte a calcular el impacto de los mismos... En fin, seguimos cacharreando...

Etiquetas: contenidos, php, usuarios
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 09:34.