Trucco per far apparire i custom post type su una pagina di tassonomia personalizzata?

16 nov 2010, 23:42:49
Visualizzazioni: 1.06K
Voti: 0

Ho configurato un custom post type e una tassonomia personalizzata per quel post type, ma ho un problema - nelle pagine dei permalink della tassonomia personalizzata, il contenuto del custom post che dovrebbe essere visualizzato non appare. Tuttavia, guardando il codice sorgente della pagina, posso vedere che c'è un div che dovrebbe contenere il contenuto del post.

Qualche suggerimento su come far visualizzare l'intero contenuto?

Modifica: Il plugin Custom Post Types UI è stato utilizzato per la creazione dei custom post type e delle tassonomie personalizzate.

Modifica 2: Si è scoperto che era un problema di Thesis. Design Options > Display Options > Archives era impostato su "solo titoli", il che impediva la visualizzazione del contenuto dei post.

6
Commenti

Penso sia utile se indichi le specifiche della registrazione del post type o incolli il codice che usi per farlo. Lo stesso vale anche per la tassonomia personalizzata associata.

hakre hakre
21 nov 2010 23:20:30

Concordo con hakre. Sembra che questo abbia più a che fare con i tag dei template di WP che con i post type personalizzati e le relative tassonomie.

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

Giusto - ho specificato nell'OP che ho usato un plugin.

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

Per i plugin, oltre a nominarli, lascia anche un link in modo che sia chiaro quale esattamente. Nel caso ci fosse un conflitto di nomi. Ci sono così tanti plugin, quindi è meglio essere sicuri sia per te che per chi risponde.

hakre hakre
22 nov 2010 04:01:16

@tnorthcutt: FYI, quando ho visitato il sito con un browser mobile, il post "test ring" era visibile. Quindi non penso ci sia qualcosa di sbagliato con la query. Non vedo nulla di relativo ai template nel codice del plugin Custom Post Type UI, potresti per favore fornirci una lista dei tuoi file template e il codice del più rilevante?

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

Ho fatto con successo questa stessa cosa per un po' su un'installazione 3.0.1 - mostrando contenuti di custom post type su una pagina di tassonomia personalizzata (senza bisogno di query personalizzate o template taxonomy.php speciali). Da quello che descrive l'OP, questo non è un problema con la funzionalità di WP, ma un bug in questo caso specifico.

somatic somatic
25 nov 2010 09:55:53
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 4
1

Prova questo, aggiungilo al tuo file functions.php

add_filter( 'pre_get_posts', 'include_tax_posts' );

function include_tax_posts( $query ) {

    // Controlla se è una pagina di tassonomia e se i filtri non sono soppressi
    if ( is_tax()  && false == $query->query_vars['suppress_filters'] )
        // Imposta i tipi di post da includere (post, page e il tuo tipo personalizzato)
        $query->set( 'post_type', array( 'post', 'page', 'IL_TUO_TIPO_DI_POST' ) );

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

Niente da fare. Questo è sul tema Thesis, per quello che vale. Mi sono assicurato di aver inserito il tipo di post corretto - all'inizio era sbagliato, ma questo aveva rimosso il div dove dovrebbe esserci il contenuto. L'ho impostato sul tipo corretto, e il div è ancora lì, ma ancora senza contenuto.

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

Per impostazione predefinita, un tipo di post personalizzato non è incluso nella query standard. Sarà necessario creare manualmente una query nella pagina della tassonomia per quel tipo di post.

17 nov 2010 00:19:02
Commenti

hai bisogno di aggiornare i permalink dopo aver attivato il tuo custom post type? WordPress deve riscrivere i permalink. Puoi anche usare la funzione flush_rewrite_rules() durante l'init del tuo custom post type, vedi questo post per l'argomento http://wpengineer.com/2044/custom-post-type-and-permalink/

bueltge bueltge
17 nov 2010 01:03:54

Temevo questo. C'è un modo programmatico per farlo, invece di scrivere una query per ogni voce nella tassonomia? Ad esempio, la mia tassonomia è "types" (di gioielli), e ho anelli, orologi, braccialetti, ecc. Dovrò usare un'istruzione condizionale per ogni tipo nel mio functions.php con una query per quel tipo specifico?

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

In futuro, per favore modifica la tua risposta precedente per includere informazioni aggiornate invece di creare una nuova risposta!

EAMann EAMann
22 nov 2010 14:59:24
4

Ok, ho fatto un po' di ricerche e sembra che ci sia un ticket per risolvere questo problema nella versione 3.1. Fino ad allora, potresti provare a utilizzare questo plugin: http://wordpress.org/extend/plugins/simple-custom-post-type-archives/

L'altra opzione, dato che si tratta di Thesis, è utilizzare la loro API per loop personalizzati e creare una query da eseguire su tutte le pagine impostate da quella tassonomia/tipo di post.

21 nov 2010 22:50:52
Commenti

La cosa che mi infastidisce è quel div vuoto. Significa che sta ciclando e restituendo il post, giusto? Ce n'è uno per ogni post e ha l'id corretto id="post_id", ecc.

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

@Norcross: Potresti per favore linkare il ticket di trac?

t31os t31os
22 nov 2010 08:37:08

Ecco due link:

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

C'è un sacco di discussioni su come verranno gestiti.

Norcross Norcross
23 nov 2010 07:38:31

Se questo fosse un problema con WP che non mostra i tipi di post personalizzati nelle pagine delle tassonomie personalizzate, non ci sarebbe affatto un div con l'id del post - ti manca solo il contenuto dei post, mentre WP almeno si comporta come se avesse post da mostrare nella pagina della tassonomia personalizzata...

somatic somatic
25 nov 2010 09:56:46
0

Non so se questo ti aiuterà dove sembra che tu stia usando un plugin per creare custom post type e tassonomie (non ho mai avuto molta fortuna con quelli). Questo è quello che ha fatto il mio sviluppatore per far apparire i post da una tassonomia personalizzata su una pagina di post personalizzata quando gli slug corrispondono. Simile a quello che stai facendo tu ma tecnicamente al contrario...

In Functions.php...

Crea relazione tra custom post type e tassonomia personalizzata

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

Registra i post type

function post_types_custom_init() {

global $post_tax;

register_post_type($post_tax['store']['post'], array('label' => 'Negozi','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' => 'Stati','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')) );

}

Aggancia all'azione init e chiama create_post_type_taxonomies quando viene attivata

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

Crea tassonomie per i loro corrispondenti post type

function create_beer_taxonomies() 
{

global $post_tax;

// Aggiungi nuova tassonomia
  $labels = array(
    'name' => _x( 'Negozi', 'taxonomy general name' ),
    'singular_name' => _x( 'Negozio', 'taxonomy singular name' ),
    'search_items' =>  __( 'Cerca Negozi' ),
    'all_items' => __( 'Tutti i Negozi' ),
    'parent_item' => __( 'Negozio Genitore' ),
    'parent_item_colon' => __( 'Negozio Genitore:' ),
    'edit_item' => __( 'Modifica Negozio' ), 
    'update_item' => __( 'Aggiorna Negozio' ),
    'add_new_item' => __( 'Aggiungi Nuovo Negozio' ),
    'new_item_name' => __( 'Nome Nuovo Negozio' ),
  );    

// Rendila gerarchica (come le categorie) e assegnale a specifici post type
  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( 'Stati', 'taxonomy general name' ),
    'singular_name' => _x( 'Stato', 'taxonomy singular name' ),
    'search_items' =>  __( 'Cerca Stati' ),
    'all_items' => __( 'Tutti gli Stati' ),
    'parent_item' => __( 'Stato Genitore' ),
    'parent_item_colon' => __( 'Stato Genitore:' ),
    'edit_item' => __( 'Modifica Stato' ), 
    'update_item' => __( 'Aggiorna Stato' ),
    'add_new_item' => __( 'Aggiungi Nuovo Stato' ),
    'new_item_name' => __( 'Nome Nuovo Stato' ),
  );

  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' ),
  ));

}

Nel Template/Loop

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);

<INSERISCI LOOP(S) QUI>

        wp_reset_query();


}

Credo* che sia tutto. Non sarai in grado di copiare-incollare quel codice e farlo funzionare automaticamente per te, ma spero che ti dia un'idea su come farlo funzionare. Questa era roba all'avanguardia all'epoca, completata circa 6 mesi fa e immagino che ci sia un'implementazione migliore da qualche parte. Sfortunatamente, il sito non è ancora online quindi nulla da mostrare al momento.

Abbiamo anche dovuto reindirizzare (htaccess) quegli slug per le tassonomie poiché volevamo che quelli che cercavano il negozio (post type) e l'archivio per i negozi (tassonomia) finissero sulla stessa pagina dove la 'pagina profilo' del negozio mostrava entrambi.

Quindi il risultato finale è che la pagina archivio per domain.com/stores-bp/walmart reindirizzerà a domain.com/stores/walmart.

Troppo confuso! Posso provare a chiarire dove necessario.

25 nov 2010 15:32:16