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

Sección privada en sitio

Estas en el tema de Sección privada en sitio en el foro de WordPress en Foros del Web. Buenas, estoy desarrollando un sitio que tendrá una sección privada y estoy trabado en el método a usar. Los datos que quiero hacer privados son ...
  #1 (permalink)  
Antiguo 26/06/2012, 09:13
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 18 años, 1 mes
Puntos: 535
Sección privada en sitio

Buenas, estoy desarrollando un sitio que tendrá una sección privada y estoy trabado en el método a usar.

Los datos que quiero hacer privados son los pertenecientes a artículos (definidos como custom post type), búsquedas y reportes estadísticos generados de ellos.

Los usuarios que puedan acceder a esta info serán desde suscriptores para arriba. Intenté usar la opción de colocar los posts (y páginas) como privado, pero los suscriptores no tienen acceso. Igual eso es fácil: colocando lo siguiente en functions.php pueden acceder:

Código:
$subRole = get_role( 'subscriber' );  
$subRole->add_cap( 'read_private_pages' ); // <- para páginas
El tema es que, estoy seguro, el editor se va a olvidar de definir la visibilidad del artículo como privada. Y, de no olvidarse nunca, le va a molestar tener que hacer ese paso (y no encontré la manera de hacer la visibilidad privada por defecto)

Entonces es cuando me pregunto si no me convendría, en todas las páginas relacionadas con ese CPT, preguntar por is_user_logged_in() y decidir o nó el acceso a esa info en vez de utilizar la "visibilidad" del post.

En definitiva:
¿Qué beneficios me trae hacer privado un post?
Siendo que son CPT's y a estos los tengo definidos como que no tengan archivos ('has_archive' => false)... ¿pueden llegar a aparece listados en algún sitio donde no los haya listado yo ex-profeso?

Gracias
__________________
...___...
  #2 (permalink)  
Antiguo 26/06/2012, 10:28
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.025
Antigüedad: 14 años, 9 meses
Puntos: 832
Respuesta: Sección privada en sitio

Con lo primero vas bien. Sólo te faltaría:

Código PHP:
$subRole->add_cap'read_private_posts' ); 
Y para hacer las entradas privadas por defecto:

http://wordpress.org/support/topic/h...t#post-2074408
  #3 (permalink)  
Antiguo 26/06/2012, 12:12
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 18 años, 1 mes
Puntos: 535
Respuesta: Sección privada en sitio

Bien! Eso aunado a esta función para remover el texto Privado: del título de las entradas hacen un buen combo:

Código:
// Remover el texto PRIVADO del titulo de las entradas
function the_title_trim($title){
//  $pattern[0] = '/Protected: /';
  $pattern[1] = '/Privado: /';
//  $replacement[0] = ''; // Enter some text to put in place of Protected:
  $replacement[1] = ''; // Enter some text to put in place of Privado:

  return preg_replace($pattern, $replacement, $title);
}

add_filter('the_title', 'the_title_trim');
Con respecto a esto:

Cita:
Siendo que son CPT's y a estos los tengo definidos como que no tengan archivos ('has_archive' => false)... ¿pueden llegar a aparece listados en algún sitio donde no los haya listado yo ex-profeso?
Estuve verificando y la única forma de toparse con esos posts (sin marcarlos como privados) es mediante una búsqueda. Es que exclude_from_search no es un atributo que pueda modificar con el plugin Custom Post Types UI (aunque el autor dijo hace 6 días que ya lo agregó y que en breve estará disponible). Podría poner el atributo Public del CPT a false, lo que hace que exclude_from_search sea true, pero nunca entendí qué demonios significa que un CPT no sea público.
__________________
...___...
  #4 (permalink)  
Antiguo 26/06/2012, 13:44
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.025
Antigüedad: 14 años, 9 meses
Puntos: 832
Respuesta: Sección privada en sitio

Cita:
Iniciado por AlZuwaga Ver Mensaje
Bien! Eso aunado a esta función para remover el texto Privado: del título de las entradas hacen un buen combo:

Código:
// Remover el texto PRIVADO del titulo de las entradas
function the_title_trim($title){
//  $pattern[0] = '/Protected: /';
  $pattern[1] = '/Privado: /';
//  $replacement[0] = ''; // Enter some text to put in place of Protected:
  $replacement[1] = ''; // Enter some text to put in place of Privado:

  return preg_replace($pattern, $replacement, $title);
}

add_filter('the_title', 'the_title_trim');
Mejor así:

Código PHP:
function the_title_trim($title) {
    return 
strtr$title , array('Privado: ' => '* ' 'Protegido: ' => '** ') );

El asterisco sirve para identificar el estado -privadas (*), protegidas (**) y públicas (nada)-. Si suprimes del todo ese aviso, será engorroso para ti.

Cita:
Iniciado por AlZuwaga Ver Mensaje
Estuve verificando y la única forma de toparse con esos posts (sin marcarlos como privados) es mediante una búsqueda. Es que exclude_from_search no es un atributo que pueda modificar con el plugin Custom Post Types UI (aunque el autor dijo hace 6 días que ya lo agregó y que en breve estará disponible). Podría poner el atributo Public del CPT a false, lo que hace que exclude_from_search sea true, pero nunca entendí qué demonios significa que un CPT no sea público.
Recuerda que a este punto has cambiado el comportamiento predeterminado de publicación de entradas, lo que también cambiaría el asunto de los resultados de búsqueda.

Ah, te recomiendo no depender de un plugin para gestionar tus custom post types. Mira lo que te está pasando.
  #5 (permalink)  
Antiguo 26/06/2012, 14:17
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 18 años, 1 mes
Puntos: 535
Respuesta: Sección privada en sitio

Cita:
El asterisco sirve para identificar el estado -privadas (*), protegidas (**) y públicas (nada)-. Si suprimes del todo ese aviso, será engorroso para ti.
En este caso en particular todas las entradas del CPT serán privadas, por lo que un aviso (ya sea el predeterminado "Privado: " o un asterisco) por toda y cada una de las entradas carece totalmente de sentido.


Cita:
Recuerda que a este punto has cambiado el comportamiento predeterminado de publicación de entradas, lo que también cambiaría el asunto de los resultados de búsqueda.
No en realidad. Ya que modifiqué el código que me pasaste en el enlace por algo similar a esto:

Código:
function default_post_visibility(){
	global $post;
	if ($post->post_type == 'el CPT en cuestion') {
		//resto de código aquí
	}
}
add_action( 'post_submitbox_misc_actions' , 'default_post_visibility' );
Con lo cual la visibilidad predeterminada sólo es afectada para el CPT en cuestion. Las entradas normales (y futuros CPT's de ser necesario) se publicarán normalmente. Y supongo que de la misma manera podría hacer...

Código:
function the_title_trim($title) { 
    global $post;
    if ($post->post_type == 'el CPT en cuestion') {
        return strtr( $title , array('Privado: ' => '* ' , 'Protegido: ' => '** ') );
    }
}
... y sólo quitar el Privado: de los títulos de las entradas de el CPT en cuestion sin afectar lo demás.


Por otro lado:

Cita:
Ah, te recomiendo no depender de un plugin para gestionar tus custom post types. Mira lo que te está pasando.
Soy de la idea de que "si modifica contenido o funcionalidad debe ser un plugin y no ir en functions.php". Pero ya he traicionado mis ideales en el pasado, así que no veo por qué no lo haría esta vez.
__________________
...___...
  #6 (permalink)  
Antiguo 26/06/2012, 19:32
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 18 años, 1 mes
Puntos: 535
Respuesta: Sección privada en sitio

Demonios... si se marcan los posts como privados, las taxonomías dejan de listarse. Esto, por ejemplo, no muestra nada. Ningún término dentro de la taxonomía:

Código:
echo '<ul>';
$args_list = array(
	'taxonomy' => 'la_taxonomia', // Registered tax name
	'show_count' => true,
	'hierarchical' => true,
	'echo' => '0',
);	 
echo wp_list_categories($args_list);
echo '</ul>';
Y, por supuesto, hay entradas que tienen esos términos. Pero están todas marcadas como privadas. Al hacerlas públicas, si se muestran. Ocurre lo mismo al listar las categorías desde el wp-admin: wp-admin/edit-tags.php?taxonomy=category

Está 'bugoso' el asunto este me parece. Mañana sigo probando.
__________________
...___...

Última edición por AlZuwaga; 26/06/2012 a las 19:58
  #7 (permalink)  
Antiguo 27/06/2012, 19:23
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.684
Antigüedad: 9 años, 8 meses
Puntos: 425
Respuesta: Sección privada en sitio

En el Post Type puedes añadir el nivel de usuario sin tener que hacer privados esos posts.

Después solo tendrías que esconderlos de las búsquedas generales. Un ejemplo por si te sirve:

Código:
		$args = array(
		'labels' => $labels,
		'public' => true,
		'publicly_queryable' => true,
		'exclude_from_search'	=> true
		'show_ui' => true,
		'query_var' => true,
		'menu_icon' => get_stylesheet_directory_uri() . '/images/admin-logo.png',
		'rewrite' => true,
		'capability_type' => 'post',
		'hierarchical' => false,
		'menu_position' => 5,
		'supports' => array('title','editor'),
		'taxonomies' => $taxonomies
	  );
(Yo también tuve problemas con el plugin que estás usando y terminamos haciéndolo todo a mano, pero hay algunos que parece que funcionan mejor. Me han hablado de este http://wordpress.org/extend/plugins/types/ aunque no lo he probado y en Code Canyon también tienen alguno que funciona)
__________________
Mi blog personal | Mi G+
  #8 (permalink)  
Antiguo 28/06/2012, 07:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 18 años, 1 mes
Puntos: 535
Respuesta: Sección privada en sitio

Gran plugín zanguanga! Ya lo estoy usando. Muchas gracias :)
__________________
...___...

Etiquetas: página, post, privada, tema
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 16:03.