Truco para mostrar tipos de entradas personalizadas en una página de taxonomía personalizada

16 nov 2010, 23:42:49
Vistas: 1.06K
Votos: 0

He configurado un tipo de entrada personalizada y una taxonomía personalizada para ese tipo de entrada, pero tengo un problema: en las páginas de enlaces permanentes de la taxonomía personalizada, no se muestra el contenido de la entrada personalizada que debería estar allí. Sin embargo, al ver el código fuente de la página, puedo ver que hay un div que debería contener el contenido de la entrada.

¿Alguna sugerencia sobre cómo hacer que se muestre todo el contenido?

Edición: Se utilizó el plugin Custom Post Types UI para la creación de los tipos de entradas personalizadas y las taxonomías personalizadas.

Edición 2: Resultó ser un problema de Thesis. Opciones de diseño > Opciones de visualización > Archivos estaba configurado como "solo títulos", lo que evitaba que se mostrara el contenido de las entradas.

6
Comentarios

Creo que sería útil que mencionaras los detalles específicos del registro del tipo de publicación o que pegues el código que utilizas para hacerlo. Además, lo mismo para la taxonomía personalizada en él.

hakre hakre
21 nov 2010 23:20:30

Estoy de acuerdo con hakre. Parece que esto tiene más que ver con las etiquetas de plantilla de WP que con cosas relacionadas con tipos de publicación personalizados y taxonomías.

Denis de Bernardy Denis de Bernardy
22 nov 2010 00:35:03

Buen punto - mencioné en el OP que usé un plugin.

Travis Northcutt Travis Northcutt
22 nov 2010 03:44:45

Para los plugins, además de nombrarlos, simplemente deja un enlace para que quede claro cuál es exactamente. Solo en caso de que haya un conflicto de nombres. Hay tantos plugins, así que es mejor prevenir por ti mismo y por aquellos que están respondiendo.

hakre hakre
22 nov 2010 04:01:16

@tnorthcutt: Para tu información, cuando visité el sitio con un navegador móvil, la publicación "test ring" era visible. Así que no creo que haya nada malo con la consulta. No veo nada relacionado con plantillas en el código del plugin Custom Post Type UI, así que ¿podrías darnos una lista de tus archivos de plantilla y el código del más relevante?

Jan Fabry Jan Fabry
22 nov 2010 06:37:05

He estado haciendo esto exitosamente durante algún tiempo en una instalación 3.0.1: mostrando contenido de tipos de entrada personalizados en una página de taxonomía personalizada (sin necesidad de consultas personalizadas o una plantilla taxonomy.php especial). Según lo que describe el OP, esto no es un problema con la funcionalidad de WP, sino un error en este caso específico.

somatic somatic
25 nov 2010 09:55:53
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 4
1

Prueba esto, añadiéndolo a tu archivo de funciones

add_filter( 'pre_get_posts', 'include_tax_posts' );

function include_tax_posts( $query ) {

    if ( is_tax()  && false == $query->query_vars['suppress_filters'] )
        $query->set( 'post_type', array( 'post', 'page', 'TU_TIPO_DE_POST' ) );

    return $query;
}
17 nov 2010 08:24:58
Comentarios

No hay suerte. Esto es en el tema Thesis, para lo que valga. Me aseguré de tener el tipo de publicación correcto ahí - al principio estaba mal, pero eso eliminó el div donde debería estar el contenido. Lo configuré al tipo correcto, y el div sigue ahí, pero aún sin contenido.

Travis Northcutt Travis Northcutt
17 nov 2010 15:47:38
3

Por defecto, un tipo de entrada personalizada no está incluido en la consulta estándar. Necesitarás crear manualmente una consulta en tu página de taxonomía para ese tipo de entrada.

17 nov 2010 00:19:02
Comentarios

¿tienes que actualizar los enlaces permanentes después de activar tu tipo de publicación personalizada? WP debe escribir los enlaces permanentes de nuevo. También puedes usar la función flush_rewrite_rules() en el init de tu tipo de publicación personalizada, mira este post sobre este tema http://wpengineer.com/2044/custom-post-type-and-permalink/

bueltge bueltge
17 nov 2010 01:03:54

Temía que fuera así. ¿Hay alguna manera programática de hacer eso, en lugar de escribir una consulta para cada entrada en la taxonomía? Es decir, mi taxonomía es "types" (de joyería), y tengo anillos, relojes, pulseras, etc. ¿Necesitaré una declaración condicional para cada tipo en mi functions.php con una consulta para ese tipo en particular?

Travis Northcutt Travis Northcutt
17 nov 2010 04:05:17

¡En el futuro, por favor edita tu respuesta anterior para incluir información actualizada en lugar de crear una nueva respuesta!

EAMann EAMann
22 nov 2010 14:59:24
4

Ok, hice un poco de investigación y parece que hay un ticket para solucionar esto en la versión 3.1. Hasta entonces, quizás quieras probar usando este plugin: http://wordpress.org/extend/plugins/simple-custom-post-type-archives/

La otra opción, dado que es Thesis, es usar su API de loops personalizados y crear una consulta para ejecutar en todas las páginas configuradas desde esa taxonomía/tipo de post.

21 nov 2010 22:50:52
Comentarios

Lo que me molesta es ese div vacío. Eso significa que está iterando y devolviendo el post, ¿verdad? Hay uno por cada post y tiene el id="post_id" correcto, etc.

Travis Northcutt Travis Northcutt
22 nov 2010 04:53:38

@Norcross: ¿Te importaría enlazar el ticket de trac?

t31os t31os
22 nov 2010 08:37:08

Aquí hay dos:

http://core.trac.wordpress.org/ticket/13818 http://core.trac.wordpress.org/ticket/13816

Hay mucho debate sobre cómo se van a manejar.

Norcross Norcross
23 nov 2010 07:38:31

Si este fuera un problema con WP que no muestra los tipos de entradas personalizadas en las páginas de taxonomías personalizadas, no habría ningún div con el ID de la publicación en absoluto - simplemente te faltan los contenidos de las publicaciones, mientras que WP al menos actúa como si tuviera publicaciones para mostrar en la página de taxonomía personalizada...

somatic somatic
25 nov 2010 09:56:46
0

No sé si esto te ayudará, pero parece que estás usando un plugin para crear tipos de contenido personalizados y taxonomías (nunca he tenido mucha suerte con esos). Esto es lo que mi desarrollador hizo para mostrar publicaciones de una taxonomía personalizada en una página de contenido personalizado cuando los slugs coinciden. Similar a lo que estás haciendo pero técnicamente al revés...

En Functions.php...

Crear relación entre tipo de contenido personalizado y taxonomía personalizada

    global $post_tax;
    $post_tax = array(
        'store' => array('post' => 'stores', 'tax' => 'store'),
        'state' => array('post' => 'states', 'tax' => 'state')
    );

Registrar tipos de contenido

function post_types_custom_init() {

global $post_tax;

register_post_type($post_tax['store']['post'], array('label' => 'Tiendas','public' => true,'show_ui' => true,'_builtin' => false, 'capability_type' => 'post','hierarchical' => true,'rewrite' => array('slug' => 'stores'),'query_var' => true,'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes')) );

register_post_type($post_tax['state']['post'], array('label' => 'Estados','public' => true,'show_ui' => true,'_builtin' => false, 'capability_type' => 'post','hierarchical' => true,'rewrite' => array('slug' => 'states'),'query_var' => true,'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes')) );

}

Conectar a la acción init y llamar a create_post_type_taxonomies cuando se active

add_action( 'init', 'create_beer_taxonomies', 0 );

Crear taxonomías para sus tipos de contenido correspondientes

function create_beer_taxonomies() 
{

global $post_tax;

// Añadir nueva taxonomía
  $labels = array(
    'name' => _x( 'Tiendas', 'taxonomy general name' ),
    'singular_name' => _x( 'Tienda', 'taxonomy singular name' ),
    'search_items' =>  __( 'Buscar Tiendas' ),
    'all_items' => __( 'Todas las Tiendas' ),
    'parent_item' => __( 'Tienda Padre' ),
    'parent_item_colon' => __( 'Tienda Padre:' ),
    'edit_item' => __( 'Editar Tienda' ), 
    'update_item' => __( 'Actualizar Tienda' ),
    'add_new_item' => __( 'Añadir Nueva Tienda' ),
    'new_item_name' => __( 'Nombre de Nueva Tienda' ),
  );    

// Hacerla jerárquica (como categorías) y asignar a tipos de contenido específicos
  register_taxonomy($post_tax['store']['tax'],
    array('post',$post_tax['review']['post']),
    array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'stores-bp' ),
  ));

  $labels = array(
    'name' => _x( 'Estados', 'taxonomy general name' ),
    'singular_name' => _x( 'Estado', 'taxonomy singular name' ),
    'search_items' =>  __( 'Buscar Estados' ),
    'all_items' => __( 'Todos los Estados' ),
    'parent_item' => __( 'Estado Padre' ),
    'parent_item_colon' => __( 'Estado Padre:' ),
    'edit_item' => __( 'Editar Estado' ), 
    'update_item' => __( 'Actualizar Estado' ),
    'add_new_item' => __( 'Añadir Nuevo Estado' ),
    'new_item_name' => __( 'Nombre de Nuevo Estado' ),
  );

  register_taxonomy($post_tax['state']['tax'],
        array('post',$post_tax['beer']['review']),
    array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'states-bp' ),
  ));

}

En Plantilla/Bucle

function meta_loop_beers($queried_tax,$queried_term){
    //$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

    $queried_page = get_query_var('paged');
    $paged = $queried_page ? $queried_page : 1;

    $post_type = '';

    global $post_tax;
    foreach($post_tax as $relation){
        if( $relation['tax'] == $queried_tax ){
            $post_type = $relation['post'];
            break;
        }

    }


        $args=array(
          'post_type' => 'post',
          $queried_tax => $queried_term,
          'post_status' => 'publish',
          'posts_per_page' => -1,
          'caller_get_posts'=> 1
        );

        $my_query = null;
        $my_query = new WP_Query($args);

<COLOCA AQUÍ TUS BUCLES>

        wp_reset_query();


}

Creo* que eso es todo. No podrás copiar-pegar ese código y que funcione automáticamente para ti, pero espero que te dé una idea de cómo hacer que funcione. Esto era tecnología de vanguardia en su momento, completado hace unos 6 meses y supongo que hay una implementación mejor en algún lado. Desafortunadamente, el sitio aún no está en vivo, así que no hay nada que mostrar en este momento.

También tuvimos que redirigir (htaccess) esos slugs para las taxonomías porque queríamos que quienes buscaran la tienda (tipo de contenido) y el archivo para las tiendas (taxonomía) aterrizaran en la misma página donde la 'página de perfil' de la tienda mostraba ambos.

Así que el resultado final es que la página de archivo para dominio.com/stores-bp/walmart redirigirá a dominio.com/stores/walmart.

¡Demasiado confuso! Puedo intentar aclarar donde sea necesario.

25 nov 2010 15:32:16