Cum să afișezi postări personalizate pe o pagină de taxonomie personalizată în WordPress
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.

Î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;
}

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.

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/

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?

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.

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.

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.

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ă...

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.
