Cum să afișezi postări personalizate pe o pagină de taxonomie personalizată în WordPress

16 nov. 2010, 23:42:49
Vizualizări: 1.06K
Voturi: 0

Am creat un tip de postare personalizat și o taxonomie personalizată pentru acel tip de postare, dar am o problemă - pe paginile permalink ale taxonomiei personalizate, conținutul postării personalizate care ar trebui să fie afișat nu apare. Totuși, dacă inspectez codul sursă al paginii, văd că există un div care ar trebui să conțină conținutul postării.

Aveți sugestii pentru a afișa întregul conținut?

Edit: Am folosit pluginul Custom Post Types UI pentru crearea tipurilor de postare personalizate și a taxonomiilor personalizate.

Edit 2: S-a dovedit a fi o problemă cu tema Thesis. În Opțiuni de Design > Opțiuni de Afișare > Arhive era setat pe "doar titluri", ceea ce împiedica afișarea conținutului postărilor.

6
Comentarii

Cred că ar fi util să menționezi specificul înregistrării tipului de postare sau să lipesc codul pe care îl folosești pentru asta. La fel și pentru taxonomia personalizată atașată.

hakre hakre
21 nov. 2010 23:20:30

Sunt de acord cu hakre. Se pare că problema are mai mult de-a face cu tag-urile de șablon din WP decât cu tipurile de postări personalizate și taxonomii.

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

Bun punct - am menționat în postarea inițială că am folosit un plugin.

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

Pentru plugin-uri, pe lângă denumirea lor, lăsați și un link pentru a fi clar despre care anume este vorba. Doar pentru cazul în care există o coincidență de nume. Există atât de multe plugin-uri, așa că este mai bine să fii în siguranță atât pentru tine, cât și pentru cei care răspund.

hakre hakre
22 nov. 2010 04:01:16

@tnorthcutt: FYI, când am vizitat site-ul cu un browser mobil, postarea "test ring" era vizibilă. Deci nu cred că există vreo problemă cu interogarea. Nu văd nimic legat de template în codul plugin-ului Custom Post Type UI, așa că poți, te rog, să ne oferi o listă cu fișierele tale de template și codul cel mai relevant?

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

Am făcut acest lucru cu succes de ceva timp pe o instalare 3.0.1 - afișând conținut de tip custom post type pe o pagină de taxonomie personalizată (fără interogări personalizate sau un template special taxonomy.php necesar). Din ceea ce descrie OP, aceasta nu este o problemă cu funcționalitatea WP, ci un bug în acest caz specific.

somatic somatic
25 nov. 2010 09:55:53
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 4
1

Încearcă asta, adaugă în fișierul tău de funcții

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

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

Nici o șansă. Asta se întâmplă pe tema Thesis, FWIW. M-am asigurat că am ales corect tipul de postare - la început era greșit, dar asta a eliminat div-ul unde ar fi trebuit să fie conținutul. L-am setat la tipul corect, iar div-ul este încă acolo, dar tot fără conținut.

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

În mod implicit, un tip de postare personalizat nu este inclus în interogarea standard. Va trebui să creezi manual o interogare în pagina de taxonomie pentru acel tip de postare.

17 nov. 2010 00:19:02
Comentarii

ai actualizat permalink-urile după activarea tipului tău de postare personalizat? WP trebuie să rescrie permalink-urile. De asemenea, poți folosi funcția flush_rewrite_rules() la inițializarea tipului tău de postare personalizat, vezi acest articol pentru acest subiect http://wpengineer.com/2044/custom-post-type-and-permalink/

bueltge bueltge
17 nov. 2010 01:03:54

Mi-era teamă de asta. Există o modalitate programatică de a face asta, în loc să scrii o interogare pentru fiecare intrare din taxonomie? Adică taxonomia mea este "types" (de bijuterii), și am inele, ceasuri, brățări etc. Va trebui să am o instrucțiune condițională pentru fiecare tip în functions.php cu o interogare pentru acel tip specific?

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

În viitor, te rog editează răspunsul tău anterior pentru a include informații actualizate în loc să creezi un răspuns nou!

EAMann EAMann
22 nov. 2010 14:59:24
4

Ok, am făcut puțină cercetare și se pare că există un tichet pentru a rezolva această problemă în versiunea 3.1. Până atunci, poți încerca să folosești acest plugin: http://wordpress.org/extend/plugins/simple-custom-post-type-archives/

Cea de-a doua opțiune, deoarece este vorba de Thesis, este să folosești API-ul lor pentru bucle personalizate și să creezi o interogare care să ruleze pe toate paginile setate din acea taxonomie / tip de postare.

21 nov. 2010 22:50:52
Comentarii

Lucrul care mă deranjează este acel div gol. Asta înseamnă că se parcurge și returnează postarea, corect? Există câte unul pentru fiecare postare și are id-ul corect="post_id", etc.

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

@Norcross: Ai putea să ne arăți link-ul către ticket-ul Trac?

t31os t31os
22 nov. 2010 08:37:08

Iată două:

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

Există o mulțime de discuții înainte și înapoi despre modul în care vor fi gestionate.

Norcross Norcross
23 nov. 2010 07:38:31

Dacă aceasta ar fi fost o problemă cu WP care nu afișează tipuri de postări personalizate pe paginile de taxonomie personalizată, nu ar exista deloc un div cu ID-ul postării acolo - pur și simplu lipsește conținutul postărilor, în timp ce WP se comportă cel puțin ca și cum ar avea postări de afișat pe pagina de taxonomie personalizată...

somatic somatic
25 nov. 2010 09:56:46
0

Nu știu dacă acest lucru te va ajuta acolo unde se pare că folosești un plugin pentru a crea postări personalizate și taxonomii (nu am avut prea mult succes cu acestea). Acesta este ceea ce a făcut dezvoltatorul meu pentru a afișa postările dintr-o taxonomie personalizată pe o pagină de postare personalizată atunci când slug-urile se potrivesc. Similar cu ceea ce faci tu, dar tehnic invers...

În Functions.php...

Creează relația între tipul de postare personalizată și taxonomia personalizată

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

Înregistrează tipurile de postări

function post_types_custom_init() {

global $post_tax;

register_post_type($post_tax['store']['post'], array('label' => 'Magazine','public' => true,'show_ui' => true,'_builtin' => false, 'capability_type' => 'post','hierarchical' => true,'rewrite' => array('slug' => 'magazine'),'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' => 'State','public' => true,'show_ui' => true,'_builtin' => false, 'capability_type' => 'post','hierarchical' => true,'rewrite' => array('slug' => 'state'),'query_var' => true,'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes')) );

}

Conectează-te la acțiunea init și apelează create_post_type_taxonomies când se declanșează

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

Creează taxonomii pentru tipurile de postări corespunzătoare

function create_beer_taxonomies() 
{

global $post_tax;

// Adaugă o nouă taxonomie
  $labels = array(
    'name' => _x( 'Magazine', 'numele general al taxonomiei' ),
    'singular_name' => _x( 'Magazin', 'numele singular al taxonomiei' ),
    'search_items' =>  __( 'Caută Magazine' ),
    'all_items' => __( 'Toate Magazinele' ),
    'parent_item' => __( 'Magazin Părinte' ),
    'parent_item_colon' => __( 'Magazin Părinte:' ),
    'edit_item' => __( 'Editează Magazin' ), 
    'update_item' => __( 'Actualizează Magazin' ),
    'add_new_item' => __( 'Adaugă Magazin Nou' ),
    'new_item_name' => __( 'Numele noului Magazin' ),
  );    

// Fă-o ierarhică (ca categoriile) și atribuie-o unor tipuri specifice de postări
  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' => 'magazine-bp' ),
  ));

  $labels = array(
    'name' => _x( 'State', 'numele general al taxonomiei' ),
    'singular_name' => _x( 'Stat', 'numele singular al taxonomiei' ),
    'search_items' =>  __( 'Caută State' ),
    'all_items' => __( 'Toate Statele' ),
    'parent_item' => __( 'Stat Părinte' ),
    'parent_item_colon' => __( 'Stat Părinte:' ),
    'edit_item' => __( 'Editează Stat' ), 
    'update_item' => __( 'Actualizează Stat' ),
    'add_new_item' => __( 'Adaugă Stat Nou' ),
    'new_item_name' => __( 'Numele noului Stat' ),
  );

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

}

În Șablon/Buclă

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

<PUNE BUCLA AICI>

        wp_reset_query();


}

Cred* că asta este tot. Nu vei putea copia și lipi acel cod și să-l faci să funcționeze automat pentru tine, dar sper că îți va oferi o idee despre cum să-l faci să funcționeze. Acesta a fost lucru de ultimă oră la vremea respectivă, finalizat acum aproximativ 6 luni și bănuiesc că există o implementare mai bună undeva. Din păcate, site-ul încă nu este live, așa că nu am ce să arăt momentan.

De asemenea, a trebuit să redirecționăm (htaccess) acele slug-uri pentru taxonomii, deoarece am dorit ca cei care caută magazinul (tipul de postare) și arhiva pentru magazine (taxonomia) să ajungă pe aceeași pagină unde 'pagina de profil' a magazinului afișa ambele.

Deci, rezultatul final este că pagina de arhivă pentru domain.com/magazine-bp/walmart va fi redirecționată către domain.com/magazine/walmart.

Prea confuz! Pot încerca să clarific unde este nevoie.

25 nov. 2010 15:32:16