Ver Mensaje Individual
  #8 (permalink)  
Antiguo 31/08/2011, 14:43
Avatar de AlZuwaga
AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 9 meses
Puntos: 535
Respuesta: Una estructura que me resulta compleja

Al final nunca pude lograrlo con la opción del CMS Press. Pero investigando un poco más parecería que estoy llegando a alguna aproximación. Usando el plugin Custom Post Type UI creé:

- Una custom taxonomie (CT) llamada ciudad a la cual le agregué los términos necesarios (ciudad 1, ciudad 2, ciudad 3)
- Un Custom Post Type (CPT) llamado alojamiento y otro gastronomia. Al de alojamiento le puse como Custom Rewrite Slug %ciudad%/alojamiento y al de gastronomía %ciudad%/gastronomia. A ambos CPT los asocié a la CT ciudad.

Basado en este artículo, coloqué el siguinte código en functions.php:

Código:
add_filter('post_type_link', 'ciudad_permalink', 10, 3);
 
function ciudad_permalink($permalink, $post_id, $leavename) {
	if (strpos($permalink, '%ciudad%') === FALSE) return $permalink;
 
        // Get post
        $post = get_post($post_id);
        if (!$post) return $permalink;
 
        // Get taxonomy terms
        $terms = wp_get_object_terms($post->ID, 'ciudad');
        if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug;
        else $taxonomy_slug = 'sin-ciudad';
 
	return str_replace('%ciudad%', $taxonomy_slug, $permalink);
}
Entonces, al crear un post de alojamiento, le selecciono la ciudad (CT) y lo guardo. El permalink pasa a ser: http://localhost/ciudad-1/alojamiento/nombre-hotel/. Fantástico!

Ahora... cuando entraba a http://localhost/ciudad-1/alojamiento/ me mostraba tanto los CPT de alojamiento como gastronomía. Fuck. Y lo mismo ocurría cuando entraba a http://localhost/ciudad-1/ (aunque acá sería deseable este comportamiento )

Busqué cuál era el template file que mostraba todo esto y se trataba de archive.php. En ese archivo coloqué el siguiente código y voilá!:

Código:
<?php
$ciudad = get_query_var( 'ciudad' ); // obtengo el término de la taxonomía 'ciudad'

$request_uri = trim($_SERVER['REQUEST_URI'], "/");  // me devuelve nombre-ciudad/post-type
$cpt = end(explode("/", $request_uri)); // me quedo sólo con la parte del post-type

if($ciudad == $cpt){
	// si la dirección es http://localhost/nombre-ciudad/
	echo "Esta es la home de la ciudad " . $ciudad;
}
else{
	// entonces la dirección es http://localhost/nombre-ciudad/post-type/ por lo tanto usos esos datos para pasárselos a query_posts()
	$args = array(
		'post_type'=> $cpt,
		'ciudad'    => $ciudad
	);
	query_posts( $args );
}

?>
Por qué obtengo el CPT de esa manera tan extraña? Pues... es lo único que se me ocurrió . Haciendo un var_dump($wp_query) no había nada que haga referencia al post_type.

No sé si este procedimiento estaría conforme con las prácticas generalmente aceptadas en el desarrollo de themes... pero por ahora es a lo máximo que pude llegar.
__________________
...___...

Última edición por AlZuwaga; 01/09/2011 a las 06:54 Razón: typo